如何在Python 2.6中升级sqlite3包?

9 投票
3 回答
4400 浏览
提问于 2025-04-16 01:49

我之前用的是Python 2.6.5来开发我的应用,这个版本自带的sqlite3是3.5.9。不过,我在别的问题中发现,sqlite3直到3.6.19版本才支持外键功能。而Python 2.7自带的sqlite3是3.6.21,所以我决定升级到Python 2.7,因为我想在我的应用中使用外键。

我在使用一个叫twisted的库,但我怎么也搞不定它的构建。twisted依赖于zope.interface,而我找不到适用于Python 2.7的zope.interface。我本以为可能会“正常工作”,但这样的话我就得手动把所有文件复制过去,自己搞定一切,而不是直接用自带安装的包。

所以我想,或许重新构建Python 2.6,并把它链接到一个新的sqlite3版本会更明智。但我不知道该怎么做。

我有安装Visual Studio 2008作为编译器,听说这是Windows上唯一真正支持的编译器,而且我在用的是64位操作系统。

3 个回答

1

我决定试试看,因为我发现我在python 2.6中安装的每一个库都在我的site-packages文件夹里。我就把site-packages文件夹复制到了我的2.7安装里,结果目前一切正常。如果这个方法有效,那对我来说是最简单的解决办法——我会再深入研究一下,但至少我现在可以继续开发了。

我不会接受这个答案,因为它根本没有回答我的问题,但就我目前来看,它确实解决了我的问题。

6

从SQLite的网站上下载最新版本的sqlite3.dll文件,然后把这个文件替换掉你电脑上Python目录里的sqlite3.dll。

3

sqlite3 不是一个内置模块,而是一个扩展模块(在我电脑上的路径是 C:\Python26\DLLs_sqlite3.pyd)。pyd 文件其实就是一种 DLL 文件,只是它的文件扩展名不同,并且只有一个入口点。此外,还有一个 sqlite3.dll 文件,里面包含了 SQLite 的代码。python.exe 并没有和这两个文件关联,所以重建 python.exe 是没有意义的。

接下来的想法是去 pysqlite2 的下载网站,获取最新的适用于 Python 2.6 的 Windows 安装程序。不幸的是,网站上没有关于它包含哪个版本的 SQLite 的说明;你需要安装它,然后自己去探索一下:

>>> import sqlite3 as standard
>>> from pysqlite2 import dbapi2 as latest
>>> for m in (standard, latest):
...    print m.sqlite_version
...
3.5.9
3.6.2
>>>

结果发现,它只包含 SQLite 版本 3.6.2,这个版本并不支持你想要的真正的外键功能。

我建议你去查看一下 邮件列表,看看你的问题是否已经有人回答,如果没有,可以询问一下是否有包含更新 SQLite 版本的 Python 2.6 安装程序(比如 Python 2.7 自带的那个)。

撰写回答