我需要在Amazon Linux中使用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?
答案 0 :(得分:0)
两个想法...
使用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
This pyenv issue提供了更多详细信息/想法。
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 :(得分:0)
这看起来很奇怪。由于某些原因,更新的sqlite版本未反映在Python上。下载最新的python。提取焦油。尝试重新编译,制作并再次安装python。可能有效!
答案 2 :(得分:0)
选项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的系统也可能如此。
答案 3 :(得分:0)
有 APSW 的非官方 Python 轮分布,它本身 doesn't release on PyPI:
<块引用>APSW 在 Python 包索引 (pypi) 中不可用,因此无法从中安装。 (一个随机的人在 APSW 名称下放了一个过时的质量差的上传。它与这个项目没有任何关系。)这样做的原因是 [...]
我假设原因早于 Python 轮子。
轮子分发包称为apsw-wheels(和GitHub repo)。除了 PyPy 轮子之外,它对我来说效果很好。