0

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

4

2 回答 2

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 用户)的新版本。

您的问题也可能出在底层 Csqlite3库上,而不是pysqlite包装器上。如果你安装sqlite3然后pysqlite从源代码构建,你也可以解决这个问题。

如果你不确定你有哪个版本,你可以在运行时检查,因为模块有一个人类可读的version属性(和一个version_info元组,就像 中的那个sys,所以你可以检查version_info >= (2, 6)),同样sqlite_versionsqlite_version_info对于底层 C 库.

于 2013-02-14T20:31:24.210 回答
1

除了 abarnert 的出色回答外,看看你提交的频率。SQLite 中的提交速度很慢,如果推迟提交,通常会带来性能优势。我自己在其他一些测试中遇到了这个问题,减少提交次数的性能差异是巨大的。

于 2013-02-14T20:35:46.857 回答