Necesito usar sqlite versión 3.8 o superior con python en Amazon Linux.
Actualicé mi instalación de sqlite a la última versión:
$ sqlite3 -version 3.22.0 2018-01-22 18:45:57 0c55d179733b46d8d0ba4d88e01a25e10677046ee3da1d5b1581e86726f2171dTambién actualicé mi versión de pysqlite
pip install --upgrade pysqliteSin embargo, mi pysqlite todavía solo parece admitir la versión 3.7 de sqlite:
$ 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'¿Cómo puedo actualizar la API de sqlite python para admitir una versión más nueva de sqlite?
Opción 1: use la versión binaria de pysqlite3 desde aquí (que ya viene con una versión más nueva de sqlite3 lib precompilada y vinculada): https://github.com/coleifer/pysqlite3 . Básicamente instalar con
pip install pysqlite3-binaryy en el código python, use pysqlite3 en lugar de sqlite3 como:
import pysqlite3 (...) conn = pysqlite3.connect(r"filename")Alternativa: Vuelva a instalar python, al instalar python, un módulo integrado sqlite3 de python (para trabajar con sqlite) está compilando y usa (compila) su propia versión de sqlite3 lib independientemente de lo que tenga actualmente en su sistema (este es el caso al menos en sistemas windows y mac, también puede ser el caso de sistemas basados en unix).
Dos ideas...
Use pyenv para instalar un intérprete separado y proporcione la ruta al sqlite más nuevo al crearlo. p.ej:
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.3Este número de pyenv proporciona más detalles/ideas.
APSW proporciona una implementación actualizada de SQLite, pero tiene objetivos diferentes a los de la biblioteca pysqlite.
APSW proporciona un contenedor SQLite 3 que proporciona la capa más delgada posible sobre la biblioteca de base de datos SQLite. Todo lo que puede hacer desde la API de SQLite C, puede hacerlo desde Python. Aunque APSW se parece vagamente a PEP 249 (DBAPI), no cumple con esa API porque funciona de la misma manera que SQLite 3. (pysqlite es compatible con DBAPI; consulte las diferencias entre apsw y pysqlite 2).
APSW incorpora la distribución de "fusión" de SQLite de forma estática, por lo que puede usarla de forma segura en un entorno (por ejemplo, Python) que también podría tener cargado otro SQLite.
Hay una distribución de rueda de Python no oficial de APSW que en sí misma no se lanza en PyPI :
APSW no está disponible en Python Package Index (pypi) y, por lo tanto, no se puede instalar desde allí. (Una persona al azar ha subido una carga obsoleta de mala calidad con el nombre de APSW. No tiene nada útil que ver con este proyecto). La razón de esto es [...]
Y supongo que la razón es anterior a las ruedas de Python.
El paquete de distribución de ruedas se llama apsw-wheels (y repositorio de GitHub ). Funcionó bien para mí, excepto por las ruedas PyPy.