代码之家  ›  专栏  ›  技术社区  ›  Carson Myers

如何升级python 2.6中的sqlite3包?

  •  9
  • Carson Myers  · 技术社区  · 15 年前

    我使用python 2.6.5来构建我的应用程序,它与sqlite3.5.9一起提供。显然,正如我在另一个问题中发现的,在3.6.19版本之前,sqlite3中没有引入外键支持。但是,python 2.7附带了sqlite3.6.21,所以这项工作——我决定在应用程序中使用外键,所以我尝试升级到python 2.7。

    我用的是扭曲的,我一辈子都无法把它修好。Twisted依赖于zope.interface,我找不到用于python 2.7的zope.interface——我认为它可能只是“工作”而已,但是我必须自己复制所有的文件,让所有的东西都能自己工作,而不仅仅是使用自安装的包。

    所以我认为重新构建python 2.6并将其与新版本的sqlite3相链接可能更明智。但我不知道怎么做--

    我该怎么做?

    我将Visual Studio 2008安装为编译器,我了解到这是唯一一个真正支持Windows的编译器,我运行的是64位操作系统。

    3 回复  |  直到 14 年前
        1
  •  3
  •   John Machin Santi    15 年前

    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,它没有您想要的真正的外键支持。

    我建议你检查一下 mailing list 查看您的问题是否在这里得到了解答,如果没有,请询问是否有可能安装包含稍后的sqlite的python 2.6安装程序(例如,python 2.7附带的安装程序)。

        2
  •  6
  •   user396159    15 年前

    从sqlite网站下载sqlite3.dll的最新版本,并替换python目录中的sqlite3.dll。

        3
  •  1
  •   Carson Myers    15 年前

    当我意识到我在python 2.6中安装的每个库都位于我的site packages文件夹中时,我决定试一试。我只是…将站点包复制到我的2.7安装中,目前为止它工作正常。这对我来说是目前为止最简单的方法,如果这可行的话——我会深入研究它,但至少我现在可以继续发展。

    我不接受这个答案,因为它甚至没有回答我的问题,但据我所知,它确实解决了我的问题。