Python 3.x的Sqlite版本

4

我希望使用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)我应该使用哪个版本的sqlite来配合3.1使用? 2)如果我需要更高级的版本,它去哪里了?我需要设置环境变量吗? 3)如果我需要升级,我需要做些什么?

2个回答

12

不要混淆SQLite的版本和SQLite API的Python绑定包pysqlite的版本。你使用的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',)

3
你需要使用 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 的版本。
你是否尝试过将 "set enable_load_extension to true"?
你可能想阅读一些 这个漫长的故事...

谢谢您的回复。我意识到了版本错误。是的,我已经尝试设置enable_load_extentsion,但是我遇到了一个属性错误。显然,由于某种不明原因,此功能默认情况下被禁用。所以我的问题仅在于如何设置enable_load_extensions,看起来我将不得不手动编译pysqlite。您链接中的示例是针对Unix的。您能否帮助我完成Windows的make/build过程? - Tarquin
FYI,说 Python x.x 附带 sqlite3 库版本 y.y.y 不太准确,因为 sqlite3 库并未随 Python 源代码分发。某个特定版本的 Python 的构建者或打包者可以自行选择要构建或链接哪个 sqlite3 库(或默认使用基础操作系统中的库)。 - Ned Deily
@Tarquin:我从未编译过pysqlite源代码,也不想尝试。我强烈建议升级你的Python;conn.enable_load_extension(True)在Windows Python 2.7.1和3.2.0中可以直接使用。否则,我建议你在http://groups.google.com/group/python-sqlite上向pysqlite论坛提问。 - John Machin
有人解决了如何在Python3中使用它的问题吗? - Eliethesaiyan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接