【问题标题】:Upgrade sqlite3 version using python 2.7.3 and pysqlite2 2.6.3使用 python 2.7.3 和 pysqlite2 2.6.3 升级 sqlite3 版本
【发布时间】:2012-11-06 10:37:20
【问题描述】:

美好的一天。

我最近一直在学习 python 和 sqlite,安装最新版本的 sqlite3 (3.7.14.1) 时遇到问题。我在 Windows 7 中使用 python 2.7.3 并使用 Windows 安装程序安装了最新的 pysqlite2 版本(2.6.3)。我使用以下代码导入 pysqlite 并检查版本,结果如​​下:

>>> from pysqlite2 import dbapi2 as sqlite3
>>> sqlite3.version
'2.6.3'
>>> sqlite3.sqlite_version
'3.7.6.2'

根据上面的代码,使用的 sqlite3 版本是旧版本。我已经下载了最新的 sqlite3.dll 并覆盖了 Python27\DLLs\ 目录中的那个。但是当我运行 sqlite3.sqlite_version 时,它仍然给我旧版本。但是,当使用默认的 python sqlite3 模块时,它会显示模块的旧版本(2.6.0)和我刚刚复制的 sqlite3.dll 的最新版本。见以下代码:

>>> import sqlite3
>>> sqlite3.version
'2.6.0'
>>> sqlite3.sqlite_version
'3.7.14.1'

我的问题是,如何升级 pysqlite2 2.6.3 的 sqlite3 3.7.14.1?谁能帮帮我?

谢谢。

【问题讨论】:

    标签: python windows sqlite


    【解决方案1】:

    您可能从here 获得的pysqlite2 安装程序包含编译为_sqlite.pydsqlite3,它不使用在DLLs 目录中找到的dll(该dll 仅由sqlite3 模块使用) .

    所以如果你想升级使用的sqlite版本,你必须自己重新编译pysqlite2

    或者,由于pysqlite2sqlite3 几乎相同,您也可以将完整的包替换为仅包含pysqlite2.py 的文件:

    from sqlite3 import *
    

    【讨论】:

    • 感谢您的回答。因此,sqlite3.dll 已从源代码编译为 _sqlite.pyd。至于编译pysqlite2,我试过了,但是报错了。这可能与没有 c 编译器来编译 sqlite3 源代码有关。如果遇到同样的错误,我会尝试安装一个 c 编译器并重试。
    • 至于第二个选项,你的意思是把pysqlite2目录的全部内容都删掉,放一个pysqlite2.py吗?
    • 是的,完全正确。这样你就可以使用 sqlite3 而不是 pysqlite2,同时保持与导入后者的模块的向后兼容性。
    • 那不还是用老版本的sqlite3模块吗?
    • 是的,它将使用安装的任何sqlite3 模块。它与pysqlite2 相同,只是名称不同和动态链接的_sqlite.pyd,因此它使用您可以更改的sqlite3.dllpysqlite2 是静态链接的,因此它使用与之链接的 sqlite3 版本。如果您确实需要将两者都更新到最新版本,则需要自己编译。
    猜你喜欢
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 2021-01-10
    • 2013-05-22
    • 2022-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多