我尝试使用“Python 2.7.4 + sqlite3”和“Firefox SQLite Manager 0.8.0”将相同的请求处理到同一个数据库。
在微小的数据库(8000条记录)上,Python和Firefox都可以快速运行并提供相同的结果。
在较大的数据库(2600000条记录)上:
以下程序有什么问题,所以python sqlite3无法在合理的时间内处理查询,同时可以更快地处理相同的请求?
import sqlite3
_sql1 = """SELECT DISTINCT J2.rule_description,
J2.feature_type,
J2.action_item_id,
J2.rule_items
FROM journal J1,
journal J2
WHERE J1.base = J2.base
AND J1.action_item_id=J2.action_item_id
AND J1.type="Action disabled"
AND J2.type="Action applied"
AND J1.rule_description="Some test rule"
AND J1.action_item_id IN (1, 2, 3, 14, 15, 16, 17, 18, 19, 30, 31, 32)
"""
if __name__ == '__main__':
sqlite_output = r'D:\results.sqlite'
with sqlite3.connect(sqlite_output) as connection:
for row in connection.execute(_sql1):
print row
更新: Command Line Shell For SQLite也会返回相同的24条记录
UPDATE2: sqlite3.sqlite_version是'3.6.21'
答案 0 :(得分:5)
看来,这个问题与Python 2.7附带的旧版sqlite有关。在python 3.3中一切正常。
非常感谢@CL的好评!
在python 2.7中
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.6.21'
在python 3.3中
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.7.12'