sql语句在python中的运行速度比命令行sqlite3慢得多
我有一个sql脚本,创建2个临时表,然后根据临时表4个步骤创建2个永久表。不返回任何行。当使用从命令行运行该脚本时 $sqlite3 MyDB.db-init summary.sql 不到一分钟。 当sql在python中通过sqlite3标准模块作为大字符串运行时 connection.executescript 需要15分钟。前3步需要1分钟,最后一步需要14分钟 考虑到它是完全相同的sql,python会做些什么使其速度减慢这么多呢?我怎样才能加快速度?sql语句在python中的运行速度比命令行sqlite3慢得多,python,sqlite,Python,Sqlite,我有一个sql脚本,创建2个临时表,然后根据临时表4个步骤创建2个永久表。不返回任何行。当使用从命令行运行该脚本时 $sqlite3 MyDB.db-init summary.sql 不到一分钟。 当sql在python中通过sqlite3标准模块作为大字符串运行时 connection.executescript 需要15分钟。前3步需要1分钟,最后一步需要14分钟 考虑到它是完全相同的sql,python会做些什么使其速度减慢这么多呢?我怎样才能加快速度? 最后一步是放置表(如果存在xxx)
最后一步是放置表(如果存在xxx);创建表xxx作为选择。。。这是一个连接,但它与命令行快速运行的连接相同。一位朋友建议使用apsw模块,但我不愿意毫无理由地切换。在我的测试中,从Python调用SQLite要比命令行调用慢100倍左右。这里有一个解决方案。我只是将查询输出到一个文本文件sql.txt,并从Python调用一个命令行SQLite调用:
import subprocess
import sys
print subprocess.Popen("sqlite3 reviews.db < sql.txt", shell=True, stdout=subprocess.PIPE).stdout.read()
您可以使用.read filename命令向sql.txt添加多个查询并调用其他文件是否检查了Python安装所依据的SQLite版本是否与命令行工具中的版本匹配?也就是说,请查看sqlite3.SQLite_version常量。还值得比较运行时配置-隔离级别&c.I在Windoze 7上。作为一个python noob,我有一个新的python安装,这是Anaconda提供的。sqlite3.sqlite_版本为“3.6.21”。Cygwin$sqlite3提供的命令行程序-版本返回3.8.7 2014-10-17 11:24:17。为了好玩,我尝试使用apsw模块从python运行sql。需要半分钟。我猜本机sqlite3模块不知何故插入了自身,它可能是每行提交吗??在某种程度上。时速。这不是一个答案,但至少我有一个解决办法。这里没有真正的原生SQLite。Python的sqlite3模块和apsw模块都有SQLite库的编译副本;Python只是碰巧要老得多。如果将代码放入代码块中,看起来会更好。请参见编辑窗口中的“{}”按钮。