Python 2.5上的Sqlite3太慢了

时间:2013-02-14 19:31:31

标签: python sqlite

当我使用Python 2.5访问Sqlite数据库时,它需要很长时间,但如果我通过其他方式(包括Python 3.2)访问同一个数据库,则需要更短的时间。这是怎么回事? (我需要Python 2.5,不能切换到Python 3.2)

2 个答案:

答案 0 :(得分:4)

不言而喻,如果您使用旧版本的程序,则无法获得稍后添加的性能改进,错误修复和功能添加。 Python 2.5在很多方面比2.7(或3.2)更慢,更笨,更强大,并且在大多数情况下,唯一的解决方案是“停止使用2.5”,除非你想要追踪更改日志和反向端口的具体改进它到2.5代码库。

但在这种情况下,它更容易,因为sqlite3是独立于Python开发的(事实上,在2.5之前,它甚至没有内置),如pysqlite。以下是一些版本历史记录(如2.62.7的新增文档中所示):

  • Python 2.5:pysqlite 2.3.2
  • Python 2.6:pysqlite 2.4.1
  • Python 2.7:pysqlite 2.6.0

最新版本是2.6.3。您可以使用任何常用方法(pipeasy_install安装它,从网站下载并按照说明从网站下载Windows二进制安装程序并运行它们等等。

事实上,如果您使用setuptools / distribute构建程序包,则可能只需要>= 2.6.0pip install mypackage自动获取2.5(和2.6用户)的新版本。

您的问题也可能是基础C sqlite3库,而不是pysqlite包装器。如果您安装sqlite3然后从源代码构建pysqlite,您也可以解决此问题。

如果您不确定自己拥有哪个版本,可以在运行时检查,因为该模块具有人类可读的version属性(和version_info元组,就像sys元组中的那个1}},因此您可以检查version_info >= (2, 6)),同样sqlite_versionsqlite_version_info查看基础C库。

答案 1 :(得分:1)

除了abarnert的优秀答案外,还要看看你多久投入一次。如果推迟,SQLite中的编译速度很慢,通常会带来性能优势。我在一些other testing期间遇到过这种情况,减少提交次数的性能差异很大。