Verwenden wir verschiedene Versionen von SQLite3 aus Python3!

Einführung

In Python3 musste ich verschiedene Versionen von SQLite3 und SQLite3 verwenden, die ich selbst verbessert habe, und habe sie als Memorandum zusammengefasst.

Umgebung

Das Betriebssystem ist CentOS 7.7. Sie können nach außen zugreifen, indem Sie Proxy usw. einstellen.

$ cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)

Installieren Sie zuerst Python3. Die Version von Python3 ist 3.6.8.

$ sudo yum install python3
$ python3 --version
Python 3.6.8

Überprüfen Sie die SQLite3-Version mit dem SQLite3-Befehl und Python3.

$ sqlite3 --version
3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668
$ python3
Python 3.6.8 (default, Aug  7 2019, 17:28:10) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.7.17'

Ich habe SQLite 3.7.17 installiert und Python3 verwendet auch SQLite 3.7.17.

Verwenden von SQLite 3.31.1 mit Python3

Holen Sie sich die neueste Version von SQLite3 (3.31.1). Ändern Sie nach dem Abrufen und Extrahieren mit wget den Verzeichnisnamen in sqlite-3.31.01.

$ wget https://www.sqlite.org/2020/sqlite-autoconf-3310100.tar.gz
$ tar zxvf sqlite-autoconf-3310100.tar.gz
$ mv sqlite-autoconf-3310100 sqlite-3.31.01

Erstellen Sie SQLite3.

$ cd sqlite-3.31.01
$ ./configure
$ make
$ ./sqlite3 --version
3.31.1 2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837bb4d6

Überprüfen Sie die Datei. Die SQLite3-Bibliothek befindet sich im Verzeichnis .libs.

$ ls -a
.            Makefile.fallback  config.guess   install-sh     sqlite3-shell.o    sqlite3.pc
..           Makefile.in        config.log     libsqlite3.la  sqlite3-sqlite3.o  sqlite3.pc.in
.deps        Makefile.msc       config.status  libtool        sqlite3.1          sqlite3.rc
.libs        README.txt         config.sub     ltmain.sh      sqlite3.c          sqlite3ext.h
INSTALL      Replace.cs         configure      missing        sqlite3.h          tea
Makefile     aclocal.m4         configure.ac   shell.c        sqlite3.lo
Makefile.am  compile            depcomp        sqlite3        sqlite3.o
$ ls -a .libs
.   libsqlite3.a   libsqlite3.lai  libsqlite3.so.0      sqlite3.o
..  libsqlite3.la  libsqlite3.so   libsqlite3.so.0.8.6

Geben Sie den absoluten Pfad von .libs in der Umgebungsvariablen LD_LIBRARY_PATH an.

$ export LD_LIBRARY_PATH=$HOME/sqlite-3.31.01/.libs
$ echo $LD_LIBRARY_PATH
/home/mototaka/sqlite-3.31.01/.libs

Lassen Sie uns die Version von SQLite3 in Python3 überprüfen.

$ python3
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.31.1'

In Python3 haben wir bestätigt, dass die neueste Version von SQLite, 3.31.1, verwendet werden kann. Lassen Sie uns auch die native SQLite-Funktion sqlite_version () überprüfen.

$ python3
>>> import sqlite3
>>> con = sqlite3.connect(":memory:")
>>> cur = con.cursor()
>>> cur.execute("SELECT sqlite_version()")
>>> cur.fetchone()
('3.31.1',)

In ähnlicher Weise haben wir in Python3 bestätigt, dass die neueste Version von SQLite, 3.31.1, verfügbar ist.

Verwenden von SQLite 3.20.1 mit Python3

Holen Sie sich SQLite3 3.20.1 und erstellen Sie es.

$ wget https://www.sqlite.org/2017/sqlite-autoconf-3200100.tar.gz 
$ tar zxvf sqlite-autoconf-3200100.tar.gz
$ mv sqlite-autoconf-3200100 sqlite-3.20.01
$ cd sqlite-3.20.01/
$ ./configure
$ make
$ ./sqlite3 --version
3.20.1 2017-08-24 16:21:36 8d3a7ea6c5690d6b7c3767558f4f01b511c55463e3f9e64506801fe9b74dce34

Geben Sie dieses Mal den relativen Pfad von .libs in der Umgebungsvariablen LD_LIBRARY_PATH an.

$ export LD_LIBRARY_PATH=./libs

Lassen Sie uns die Version von SQLite3 in Python3 überprüfen.

$ python3
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.20.1'

Mit Python3 konnte ich bestätigen, dass das erstellte SQLite 3.20.1 verwendet werden kann. Durch Angabe des relativen Pfads von .libs in LD_LIBRARY_PATH können verschiedene SQLites aus Python3 verwendet werden, indem das Verzeichnis in der folgenden Umgebung geändert wird.

$ ls
sqlite3.00.08  sqlite3.06.23.1  sqlite3.12.02  sqlite3.18.02  sqlite3.23.00  sqlite3.29.00
sqlite3.01.06  sqlite3.07.17    sqlite3.13.00  sqlite3.19.03  sqlite3.24.00  sqlite3.30.01
sqlite3.02.07  sqlite3.08.11.1  sqlite3.14.02  sqlite3.2.8    sqlite3.25.03  sqlite3.31.01
sqlite3.03.17  sqlite3.09.03    sqlite3.15.02  sqlite3.20.01  sqlite3.26.00
sqlite3.04.02  sqlite3.10.02    sqlite3.16.02  sqlite3.21.00  sqlite3.27.02
sqlite3.05.09  sqlite3.11.01    sqlite3.17.02  sqlite3.22.00  sqlite3.28.00

Zusammenfassung

Im Fall von SQLite ist es im Gegensatz zu anderen Datenbanken schwierig, die Datenbank so zu ändern, dass eine Verbindung mit Treiber- und Verbindungsinformationen hergestellt wird, und ich dachte, ich müsste den Quellcode von Python3 im schlimmsten Fall verbessern, verwende jedoch die Umgebungsvariable LD_LIBRARY_PATH. Dies machte es überraschend einfach, verschiedene Versionen von SQLite3 zu verwenden. Da ich dieses Mal keine anderen Root-Berechtigungen als die Installation von Pyhton3 verwendet habe, halte ich es für eine gute Idee, die Funktionsprüfung mit verschiedenen Versionen einfach auszuprobieren.

Wenn Sie Fehler oder Bedenken bezüglich der Beschreibung finden, würden wir uns freuen, wenn Sie uns in der Bearbeitungsanfrage oder im Kommentar Feedback geben könnten.

Recommended Posts

Verwenden wir verschiedene Versionen von SQLite3 aus Python3!
Verwenden Sie thingspeak aus Python
Verwenden Sie fließend Python
Verwenden Sie MySQL aus Python
Verwenden Sie mit pyenv mehrere Versionen der Python-Umgebung
Absolvieren Sie Python (x, y) und versuchen Sie, verschiedene Versionen von Python @Windows zu mischen
Verwenden Sie MySQL aus Python
Verwenden Sie mecab-ipadic-neologd von Python
Verwenden wir die Python-Version des Confluence-API-Moduls.
Verwenden wir die offenen Daten von "Mamebus" in Python
Mal sehen, wie def in Python verwendet wird
Lassen Sie uns Python Janome einfach verwenden
Installieren Sie mehrere Versionen von Python
Stellen Sie von Python aus eine Verbindung zu SQLite her
Verwenden Sie die e-Stat-API von Python
Anders als der Importtyp von Python. Bedeutung von aus A Import B.
Verwenden wir usercustomize.py anstelle von sitecustomize.py
Verwenden Sie Stanford Core NLP von Python
Verwenden wir Tomotopie anstelle von Gensim
Verwendung von SQLite in Python
Existenz aus Sicht von Python
Lesen und verwenden Sie Python-Dateien aus Python
Verwenden Sie zwangsweise Google Translate aus Python
[Einführung in Python] Verwenden wir Pandas
Verwenden Sie die kabu Station® API von Python
Verwenden Sie die Flickr-API von Python
[Einführung in Python] Verwenden wir Pandas
Verwenden Sie das von fastText trainierte Modell von Python
[Einführung in Python] Verwenden wir Pandas
Verwenden Sie die Google Analytics-API von Python
So vermeiden Sie doppelte Daten bei der Eingabe von Python in SQLite.
Führen Sie verschiedene Versionen von Python (wsgi) -Apps in einer Entwicklungsumgebung aus
[Python] Zusammenfassung der Verwendung von Pandas
Verwenden Sie den PostgreSQL-Datentyp (jsonb) von Python
Verwenden Sie die API-Gruppe A3RT für maschinelles Lernen aus Python
Notizen vom Anfang von Python 1 lernen
Ich bin verblüfft über das Verhalten von filter () aufgrund verschiedener Versionen von Python
Ich möchte ein Glas aus Python verwenden
[Einführung in Python] Verwenden wir foreach mit Python
Verwenden Sie die Google Cloud Vision-API von Python
Zusammenfassung der Verwendung der Python-Liste
[Python2.7] Zusammenfassung der Verwendung des Unterprozesses
Notizen vom Anfang von Python 2 lernen
[Frage] Wie verwende ich plot_surface von Python?
Holen Sie sich den Inhalt von Git Diff aus Python
[Python] Verwendung von zwei Arten von type ()
Firebase: Verwenden Sie Cloud Firestore und Cloud Storage von Python
Studie aus Python Hour7: Verwendung von Klassen
Die Antwort von "1/2" unterscheidet sich zwischen Python2 und 3
Ein Memorandum zum Aufrufen von Python aus Common Lisp
[Bash] Holen Sie sich die Kraft von Python aus Bash mithilfe der folgenden Dokumentation
Verwenden Sie OpenSeesPy unabhängig vom Betriebssystem oder der Python-Version
Zusammenfassung der Verwendung von MNIST mit Python
Python-Entwicklungsumgebung - Verwendung von Pyenv und Virtualenv-
Ich möchte Ceres Solver aus Python verwenden
Zusammenfassung des Studiums von Python zur Verwendung von AWS Lambda
Wrap C ++ mit Cython zur Verwendung von Python
Verwenden Sie das nghttp2 Python-Modul von Homebrew aus pyenvs Python
Verwenden Sie Tor, um eine Verbindung von urllib2 [Python] [Mac] herzustellen.