Tag: SQLite

关于Android SQLite中的“_id”字段

Android SQLite中需要字段“_id”吗?

使用Django将数千条logging插入SQLite表的有效方法是什么?

我必须使用Django的ORM将8000多条logging插入SQLite数据库。 这个操作需要每分钟大约一次的cronjob运行。 目前我正在使用for循环遍历所有项目,然后逐个插入它们。 例: for item in items: entry = Entry(a1=item.a1, a2=item.a2) entry.save() 什么是这样做的有效方式? 编辑:两个插入方法之间的一点点比较。 没有commit_manually装饰器(11245logging): nox@noxdevel marinetraffic]$ time python manage.py insrec real 1m50.288s user 0m6.710s sys 0m23.445s 使用commit_manually装饰器(11245logging): [nox@noxdevel marinetraffic]$ time python manage.py insrec real 0m18.464s user 0m5.433s sys 0m10.163s 注意:除了插入到数据库之外, testing脚本还执行一些其他操作(下载ZIP文件,从ZIP压缩文件中提取XML文件,parsingXML文件),因此执行所需的时间不一定代表插入所需的时间logging。

从SQLite命令行shell中打开数据库文件

我正在使用SQLite命令行Shell 。 正如所logging的,我可以通过将其作为参数提供给可执行文件来打开数据库: sqlite3 data.db 这看起来可能是无关紧要的 – 而且非常接近! – 但我不知道如何打开一个数据库文件在调用它之后,而不提供文件作为命令行参数(如果我说,双击sqlite3.exe在Windows中)。 SQLite shell工具中的命令是什么来指定一个数据库文件?

sqlite是否支持select中的任何一种IF(条件)语句

sqlite是否支持select语句中的sql函数“if”? 例如 select if( length( a ) > 4 , a , ' ') as b from foo 如果长度超过4个字符,将返回一个。 否则会返回“b” 如果它支持条件select什么是应该使用的语法? 我检查了http://sqlite.org/lang_corefunc.html,但我看不到它。

导出一个MySQL数据库到SQLite数据库

请帮助我将MySQL数据库导出到SQLite数据库。

SQLite,python,unicode和非UTF数据

我开始尝试使用python在sqlite中存储string,并得到消息: sqlite3.ProgrammingError:除非使用可解释8位字节串的text_factory(如text_factory = str),否则不得使用8位字节串。 强烈build议您将应用程序切换为Unicodestring。 好的,我切换到Unicodestring。 然后我开始收到消息: sqlite3.OperationalError:无法解码到UTF-8列'tag_artist'与文字'SigurRós' 当试图从数据库中检索数据。 更多的研究,我开始用utf8编码,但是“SigurRós”开始看起来像“Sigur R?s” 注意:我的控制台被设置为显示在“latin_1”,正如@John Machin指出的那样。 是什么赋予了? 读完这个之后 ,描述完全一样的情况,好像build议是忽略其他的build议,并使用8位字节串。 在我开始这个过程之前,我对Unicode和UTF不太了解。 在过去的几个小时里,我学到了很多东西,但是我仍然不知道是否有办法将“ó”从拉丁文-1正确地转换为utf-8,而不是将其摧毁。 如果没有,为什么会强烈build议我将应用程序切换到unicodestring? 我将用一个总结和一些示例代码来更新这个问题,这些代码是我在过去24小时学到的一切,这样我的鞋子里有人可以有一个简单的指导。 如果我发布的信息有任何错误或误导,请告诉我,我会更新,或者你们其中一位高级人员可以更新。 答案摘要 让我先说明我的理解。 处理各种编码的目标是,如果你想在它们之间进行转换,就要理解你的源编码是什么,然后使用该源编码将其转换为unicode,然后将其转换为你想要的编码。 Unicode是基础,编码是该基础子集的映射。 utf_8为unicode中的每个字符提供了空间,但是因为它们与latin_1不在同一个地方,所以使用utf_8编码并发送到latin_1控制台的string将看起来不像您期望的那样。 在python中获得unicode和另一种编码的过程如下所示: str.decode('source_encoding').encode('desired_encoding') 或者如果str已经在unicode中 str.encode('desired_encoding') 对于sqlite我实际上并不想重新编码,我想解码它,并保持unicode格式。 在尝试使用unicode和python编码时,需要注意以下四点。 您想要使用的string编码,以及您想要的编码。 系统编码。 控制台编码。 源文件的编码 阐述: (1)从源读取string时,它必须有一些编码,如latin_1或utf_8。 在我的情况下,我从文件名获得string,所以不幸的是,我可以得到任何types的编码。 Windows XP使用UCS-2(一个Unicode系统)作为它的本地stringtypes,这似乎是对我的欺骗。 对我来说幸运的是,大多数文件名中的字符不会由多个源编码types组成,我认为我的所有字符都完全是latin_1,完全是utf_8,或者只是简单的ascii(它是那些)。 所以我只读了它们,并将它们解码,好像它们仍然在latin_1或utf_8中。 不过,有可能你可以将latin_1和utf_8以及其他任何字符混合在一个文件名中。 有时这些angular色可以显示为框,其他时候他们只是看起来被打乱,而其他时候他们看起来是正确的(重音字符和什么)。 继续。 (2)Python有一个默认的系统编码,在Python启动时被设置,在运行时不能被修改。 详情请看这里 。 肮脏的总结…以及这里是我添加的文件: \# sitecustomize.py \# this file […]

如何使用python和sqlite3创build一个新的数据库(名为xx.db)

import sqlite3 conn = sqlite3.connect(r"D:\aaa.db") 有没有办法自动创build数据库文件,如果它不存在,当我连接到它? 谢谢

在Python中使用unicode()和encode()函数

我有一个pathvariables的编码问题,并将其插入到SQLite数据库。 我试图解决它与编码(“utf-8”)function没有帮助。 然后我使用unicode()函数,它给我types的Unicode 。 print type(path) # <type 'unicode'> path = path.replace("one", "two") # <type 'str'> path = path.encode("utf-8") # <type 'str'> strange path = unicode(path) # <type 'unicode'> 最后我得到了unicodetypes,但是当pathvariables的types是str时,仍然存在相同的错误 sqlite3.ProgrammingError:除非使用可解释8位字节串的text_factory(如text_factory = str),否则不得使用8位字节串。 强烈build议您将应用程序切换为Unicodestring。 你能帮我解决这个错误,并解释正确的使用encode("utf-8")和unicode()函数? 我经常与之战斗。 编辑: 这个execute()语句引发了这个错误: cur.execute("update docs set path = :fullFilePath where path = :path", locals()) 我忘了改变同样问题的fullFilePathvariables的编码,但我现在很困惑。 我应该只使用unicode()还是编码(“utf-8”)或两者? 我不能用 fullFilePath = unicode(fullFilePath.encode("utf-8")) […]

使用Python将CSV文件导入到sqlite3数据库表中

我有一个CSV文件,我想用Python将这个文件批量导入到我的sqlite3数据库中。 该命令是“.import …..”。 但似乎不能像这样工作。 任何人都可以给我一个例子,如何在sqlite3中做到这一点? 我正在使用Windows以防万一。 谢谢

Python的sqlite3和并发

我有一个使用“线程”模块的Python程序。 每秒一次,我的程序启动一个新的线程,从Web获取一些数据,并将这些数据存储到我的硬盘。 我想使用sqlite3来存储这些结果,但我不能得到它的工作。 这个问题似乎是关于以下的一行: conn = sqlite3.connect("mydatabase.db") 如果我把这行代码放在每个线程中,我得到一个OperationalError告诉我数据库文件被locking。 我想这意味着另一个线程通过sqlite3连接打开mydatabase.db并locking它。 如果我将这行代码放在主程序中,并将连接对象(conn)传递给每个线程,我会得到一个ProgrammingError,表示在一个线程中创build的SQLite对象只能在同一个线程中使用。 以前我将所有的结果存储在CSV文件中,并没有任何这些文件locking问题。 希望这将是可能的与SQLite。 有任何想法吗?