【问题标题】:Sqlite version for Python 3.xPython 3.x 的 Sqlite 版本
【发布时间】:2011-06-15 22:53:28
【问题描述】:

我想在 Python 3.1.3 中使用 sqlite3,我需要将 enable_load_extension 设置为 true。为此,我相信我需要 sqlite 版本 3.x。从这里阅读的帖子看来,一个合适的 sqlite 版本应该与 python 2.6 及更高版本捆绑在一起。但是,当我这样做时:

import sqlite3
sqlite3.version_info

返回的结果是:'2.4.1'

我在另一台运行 Python 2.6 的机器上得到了相同的答案。

pysqlite 站点没有适用于 Python 3.x 的二进制文件。我的 Python 副本来自 Python 官方网站。

所以: 1) 我应该在 3.1 中使用什么版本的 sqlite? 2)如果我应该有一个更新的版本,它去了哪里 - 我需要设置一个环境变量吗? 2)如果我需要你

【问题讨论】:

    标签: python sqlite


    【解决方案1】:

    不要将 SQLite 的版本与 pysqlite 的版本混淆,pysqlite 是 SQLite API 的 Python 绑定。您使用的versionversion_info 属性指的是后者。

    有没有想过为什么模块被命名为sqlite3?只支持3.x版本!

    要检查 SQLite 版本,请改用sqlite_version

    import sqlite3
    print sqlite3.sqlite_version
    

    在我的 Python 2.6 安装中,这会打印出 3.5.9。对于 Python 3.2,我得到 3.7.4

    也可以使用SQL获取版本:

    >>> import sqlite3
    >>> connection = sqlite3.connect(':memory:')
    >>> cursor = connection.cursor()
    >>> cursor.execute('SELECT sqlite_version()').fetchone()
    ('3.7.4',)
    

    【讨论】:

      【解决方案2】:

      您需要sqlite3.sqlite_version_info ... Python 2.6 和 3.1 为 3.5.9,Python 2.7 为 3.6.21,Python 3.2 为 3.7.4。你得到的是pysqlite的版本。

      您是否尝试过“将 enable_load_extension 设置为 true”?

      您不妨阅读一些this long saga ...

      【讨论】:

      • 感谢您的回复。我意识到我的版本错误。是的,我尝试设置 enable_load_extentsion,但出现属性错误。显然,由于某些不明原因,默认情况下禁用此功能。所以我的问题完全是如何设置 enable_load_extensions 看起来我必须手动编译 pysqlite。您链接中的示例适用于 Unix。你能牵着我的手完成 Windows 的制作/构建过程吗?
      • 仅供参考,说 Python x.x 附带 sqlite3 库版本 y.y.y 并不完全正确,因为 sqlite3 库未随 Python 源代码一起分发。由特定 Python 版本的构建器或打包器来选择构建或链接哪个 sqlite3 库(或默认从底层操作系统)。
      • @Tarquin:我从来没有从源代码构建过 pysqlite,我也不想尝试。我强烈建议升级你的 Python; conn.enable_load_extension(True) 可以直接在 Windows Python 2.7.1 和 3.2.0 中使用。否则,我建议在 pysqlite 论坛上提问groups.google.com/group/python-sqlite
      • 有人知道如何将它与 Python3 一起使用吗?
      猜你喜欢
      • 1970-01-01
      • 2016-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-01
      • 1970-01-01
      相关资源
      最近更新 更多