繁体   English   中英

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

[英]How to use the latest sqlite3 version in python

我需要在 Amazon Linux 中使用带有 python 的 sqlite 3.8 或更高版本。

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

两个想法...

  1. 使用pyenv安装单独的解释器,并在创建时提供新的 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

    这个 pyenv 问题提供了更多细节/想法。

  2. APSW提供了 SQLite 的最新实现,但与 pysqlite 库有不同的目标。

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

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

选项 1:从这里使用 pysqlite3 的二进制版本(它已经带有预编译和链接的较新版本的 sqlite3 lib): https : //github.com/coleifer/pysqlite3 基本上安装

pip install pysqlite3-binary

在 python 代码中,使用 pysqlite3 而不是 sqlite3,如:

import pysqlite3
    (...) conn = pysqlite3.connect(r"filename")

替代方案:重新安装 python,在安装 python 时,一个内置的 python 模块 sqlite3(用于使用 sqlite)正在编译并使用(编译)它自己版本的 sqlite3 lib,而不管您系统中当前有什么(至少是这种情况)在 windows 和 mac 系统上,基于 unix 的系统也可能是这种情况)。

APSW有一个非官方的 Python 轮分布,它本身不在 PyPI 上发布

APSW 在 Python 包索引 (pypi) 中不可用,因此无法从中安装。 (一个随机的人在 APSW 名称下放置了一个过时的质量差的上传。它与这个项目没有任何用处。)这样做的原因是 [...]

我认为原因早于 Python 轮子。

Wheel 分发包称为asw-wheels (和GitHub repo )。 除了 PyPy 轮子之外,它对我来说效果很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM