我有一个SQL脚本,它创建2个临时表,然后基于临时表创建2个永久表(4个步骤)。没有返回行。当使用$ sqlite3 MyDB.db -init Summarize.sql
从命令行运行该脚本时,只需不到一分钟的时间。
当SQL在Python中作为一个大字符串运行(通过SQLite3标准模块)connection.executescript("""<contents of Summarize.sql here>""")
时,需要15分钟(前3步需要1分钟,最后一步需要剩余的14分钟)。
假设它是完全相同的SQL,Python做了什么会使它变慢这么多呢?我怎样才能加快它呢?(最后一步是drop table if exists xxx; create table xxx as select ...
这是一个连接,但它是命令行快速运行的同一个连接。)一个朋友建议使用apsw模块,但我不愿意在没有充分理由的情况下切换。
1条答案
按热度按时间fgw7neuy1#
在我的测试中,从Python调用SQLite要比命令行调用慢100倍,这里有一个解决方案,我只是将查询输出到文本文件sql.txt,然后从Python调用命令行SQLite调用:
可以在sql.txt中添加多个查询,也可以使用
.read filename
命令调用其他文件