如何在python中使用最新的sqlite3版本

如何在python中使用最新的sqlite3版本,python,sqlite,pysqlite,Python,Sqlite,Pysqlite,我需要在AmazonLinux中使用sqlite版本3.8或更高版本的python 我已将sqlite安装更新为最新版本: $ sqlite3 -version 3.22.0 2018-01-22 18:45:57 0c55d179733b46d8d0ba4d88e01a25e10677046ee3da1d5b1581e86726f2171d 我还更新了我的pysqlite版本 pip install --upgrade pysqlite 但是,我的pysqlite似乎仍然只支持sqlite

我需要在AmazonLinux中使用sqlite版本3.8或更高版本的python

我已将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?

两个想法

  • 用于安装单独的解释器,并在创建新的sqlite时提供其路径。例如:

    PYTHON_CONFIGURE_OPTS="LD_RUN_PATH=/usr/local/opt/sqlite/lib LDFLAGS=-L/usr/local/opt/sqlite/lib CPPFLAGS=-I/usr/local/include" pyenv install 3.4.3
    
    提供更多细节/想法

  • 提供SQLite的最新实现,但目标与pysqlite库不同

    APSW提供了一个SQLite 3包装器,它提供了SQLite数据库库上最薄的一层。可以从SQLite C API执行的所有操作,都可以从Python执行。尽管APSW看起来与PEP249(DBAPI)有点相似,但它与该API不兼容,因为它的工作方式与SQLite 3相同。(pysqlite与DBAPI兼容-请参阅apsw和pysqlite 2之间的差异)

    APSW静态地嵌入SQLite“合并”发行版,因此您可以在可能还加载了另一个SQLite的环境(例如Python)中安全地使用它


  • 选项1:从这里开始使用二进制版本的pysqlite3(该版本已经预编译并链接了较新版本的sqlite3 lib): . 基本安装

    pip install pysqlite3-binary
    
    在python代码中,使用pysqlite3而不是sqlite3,如:

    导入pysqlite3
    (…)conn=pysqlite3.connect(r“filename”)
    
    备选方案:
    重新安装python,安装python时,内置python模块sqlite3(用于使用sqlite)正在编译并使用(编译)其自身版本的sqlite3库,而不管系统中当前有什么(至少在windows和mac系统上是这样,在基于unix的系统上也可能是这样).

    有一个非官方的Python wheel发行版,其本身:

    APSW在Python包索引(pypi)中不可用,因此无法从中安装。(一个随机的人把一个过时的劣质上传放在了APSW的名字下。这与这个项目无关。)原因是[…]

    我认为原因早于Python轮子


    车轮分配包称为(和)。除了PyPy wheels之外,它对我来说效果不错。

    或者更好的办法是暂时不要使用
    2.2.x
    ,现在就坚持使用
    2.1.x
    。这能回答你的问题吗?