当我使用 Python 2.5 访问 Sqlite 数据库时,花费的时间太长,但如果我通过其他方式(包括 Python 3.2)访问同一个数据库,则花费的时间要短得多。这是怎么回事?(我需要 Python 2.5,无法切换到 Python 3.2)
2 回答
不用说,如果您使用旧版本的程序,您将无法获得后来添加的性能改进、错误修复和功能添加。Python 2.5 在很多方面都比 2.7(或 3.2)更慢、更容易出错且功能更弱,而且在大多数情况下,唯一的解决方案是“停止使用 2.5”,除非您想追踪更改日志和反向移植中的具体改进它到 2.5 代码库。
但是在这种情况下,它就容易多了,因为sqlite3
它是独立于 Python 开发的(实际上,在 2.5 之前,它甚至都没有内置),如pysqlite
. 这是一些版本历史记录(如2.6和2.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。您可以使用任何常用方法安装它(pip
、easy_install
、从网站下载并按照说明进行操作、从网站下载 Windows 二进制安装程序并运行它们等)。
事实上,如果你正在使用setuptools
/构建一个包distribute
,你可能只需对 提出一个要求>= 2.6.0
,pip install mypackage
就会自动获得 2.5(和 2.6 用户)的新版本。
您的问题也可能出在底层 Csqlite3
库上,而不是pysqlite
包装器上。如果你安装sqlite3
然后pysqlite
从源代码构建,你也可以解决这个问题。
如果你不确定你有哪个版本,你可以在运行时检查,因为模块有一个人类可读的version
属性(和一个version_info
元组,就像 中的那个sys
,所以你可以检查version_info >= (2, 6)
),同样sqlite_version
,sqlite_version_info
对于底层 C 库.
除了 abarnert 的出色回答外,看看你提交的频率。SQLite 中的提交速度很慢,如果推迟提交,通常会带来性能优势。我自己在其他一些测试中遇到了这个问题,减少提交次数的性能差异是巨大的。