当我使用Python 2.5访问Sqlite数据库时,它需要很长时间,但如果我通过其他方式(包括Python 3.2)访问同一个数据库,则需要更短的时间。这是怎么回事? (我需要Python 2.5,不能切换到Python 3.2)
答案 0 :(得分:4)
不言而喻,如果您使用旧版本的程序,则无法获得稍后添加的性能改进,错误修复和功能添加。 Python 2.5在很多方面比2.7(或3.2)更慢,更笨,更强大,并且在大多数情况下,唯一的解决方案是“停止使用2.5”,除非你想要追踪更改日志和反向端口的具体改进它到2.5代码库。
但在这种情况下,它更容易,因为sqlite3
是独立于Python开发的(事实上,在2.5之前,它甚至没有内置),如pysqlite
。以下是一些版本历史记录(如2.6和2.7的新增文档中所示):
最新版本是2.6.3。您可以使用任何常用方法(pip
,easy_install
安装它,从网站下载并按照说明从网站下载Windows二进制安装程序并运行它们等等。
事实上,如果您使用setuptools
/ distribute
构建程序包,则可能只需要>= 2.6.0
,pip install mypackage
自动获取2.5(和2.6用户)的新版本。
您的问题也可能是基础C sqlite3
库,而不是pysqlite
包装器。如果您安装sqlite3
然后从源代码构建pysqlite
,您也可以解决此问题。
如果您不确定自己拥有哪个版本,可以在运行时检查,因为该模块具有人类可读的version
属性(和version_info
元组,就像sys
元组中的那个1}},因此您可以检查version_info >= (2, 6)
),同样sqlite_version
和sqlite_version_info
查看基础C库。
答案 1 :(得分:1)
除了abarnert的优秀答案外,还要看看你多久投入一次。如果推迟,SQLite中的编译速度很慢,通常会带来性能优势。我在一些other testing期间遇到过这种情况,减少提交次数的性能差异很大。