我需要使用sqlite版本3. 8或更高版本与python在亚马逊Linux。
我更新了我的sqlite安装到最新版本:
$ sqlite3 -version
3.22.0 2018-01-22 18:45:57 0c55d179733b46d8d0ba4d88e01a25e10677046ee3da1d5b1581e86726f2171d
我还更新了我的pysqlite版本
pip install --upgrade pysqlite
但是,我的pysqlite似乎仍然只支持sqlite 3. 7版本:
$ python
>>> import sqlite3
>>> sqlite3.version
'2.6.0'
>>> sqlite3.sqlite_version
'3.7.17'
>>>
>>> from pysqlite2 import dbapi2 as sqlite
>>> sqlite.version
'2.8.3'
>>> sqlite.sqlite_version
'3.7.17'
如何更新sqlite python API以支持新版本的sqlite?
4条答案
按热度按时间bbuxkriu1#
**选项1:**从这里使用pysqlite3的二进制版本(它已经附带了一个预编译和链接的较新版本的sqlite3 lib):https://github.com/coleifer/pysqlite3。基本安装
在python代码中,使用pysqlite3代替sqlite3,如:
**替代:**重新安装python,当安装python时,一个内置的python模块sqlite3(用于与sqlite一起工作)正在编译,并使用(编译)它自己的sqlite3 lib版本,而不管您当前的系统中有什么(至少在windows和mac系统上是这样,在基于unix的系统上也可能是这样)。
6za6bjd02#
两个想法...
1.使用pyenv安装一个单独的解释器,并在创建时提供新sqlite的路径。例如:
This pyenv issue提供了一些更多的细节/想法。
APSW提供了一个SQLite 3 Package 器,它在SQLite数据库上提供了可能的最薄的层。你可以从SQLite C API做的一切,你可以从Python做。虽然APSW看起来有点像PEP 249(DBAPI),但它不兼容该API,因为它的工作方式是SQLite 3。(pysqlite是DBAPI兼容的-请参阅apsw和pysqlite 2之间的区别)。
APSW静态地嵌入了SQLite“合并”发行版,因此您可以在可能加载了另一个SQLite的环境(例如Python)中安全地使用它。
chy5wohz3#
APSW有一个非官方的Python wheel发行版,它本身并没有在PyPI上发布:
APSW在Python Package Index(pypi)中不可用,因此不能从它安装。(一个随机的人把一个过时的质量差的上传放在APSW名称下。它与这个项目没有任何用处。)
我猜这个原因要早于Python轮子。
Wheel分发包叫做apsw-wheels(和GitHub repo)。除了PyPy Wheels之外,它对我来说工作得很好。
zaqlnxep4#
所以,我花了几天时间在Cygwin中尝试解决这个问题。我需要在一个新项目中使用最新的SQLite和python39。如果你想继续使用python的sqlite3库,请遵循以下步骤:
就这样。这个脚本会让你看到变化:
输出应该如下所示: