Python和sqlite3 - 添加数千行

时间:2011-01-18 02:01:27

标签: python sql django sqlite

我有一个包含数千个单独插入语句的.sql文件。这一切都需要永远。我试图找到一种更有效地做到这一点的方法。在python中,sqlite3库不能执行“.read”或“.import”之类的操作,但executecript对于那么多插入来说太慢了。

我安装了sqlite3.exe shell,希望使用“.read”或“.import”但我无法弄清楚如何使用它。在eclipse中通过django运行它不起作用,因为它期望数据库位于我的C驱动器的根目录,这似乎很愚蠢。通过命令行运行它不起作用,因为它找不到我的数据库文件(除非我做错了)

任何提示?

谢谢!

4 个答案:

答案 0 :(得分:11)

您使用的是交易吗? SQLite将为每个insert statement individually by default创建一个事务,这会减慢速度。

  

默认情况下,sqlite3模块会打开   事务隐式地在数据之前   修改语言(DML)语句   (即INSERT / UPDATE / DELETE / REPLACE)

如果您在开始时手动创建一个单独的事务并在最后提交它,那么它将加快速度。

答案 1 :(得分:3)

您是否尝试在单个事务中运行插入? 如果没有,那么每个插入都被视为一个事务,并且......你可以阅读这个here

的SQLite FAQ

答案 2 :(得分:2)

同时尝试VACUUMANALYZE数据库文件。它帮助了我的类似问题。

答案 3 :(得分:1)

使用参数化查询

使用交易。