Utilisons différentes versions de SQLite3 de Python3!

introduction

En Python3, j'ai dû utiliser différentes versions de SQLite3 et SQLite3 que j'ai améliorées moi-même, je l'ai donc résumé sous forme de mémorandum.

environnement

Le système d'exploitation est CentOS 7.7. Vous pouvez accéder à l'extérieur en définissant Proxy, etc.

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

Tout d'abord, installez Python3. La version de Python3 est la 3.6.8.

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

Vérifiez la version SQLite3 avec la commande SQLite3 et 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'

J'ai installé SQLite 3.7.17 et Python3 utilise également SQLite 3.7.17.

Utilisation de SQLite 3.31.1 avec Python3

Obtenez la dernière version de SQLite3 (3.31.1). Après l'avoir obtenu avec wget et l'avoir extrait, changez le nom du répertoire en 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

Construisez SQLite3.

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

Vérifiez le fichier. La bibliothèque SQLite3 se trouve dans le répertoire .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

Spécifiez le chemin absolu de .libs dans la variable d'environnement LD_LIBRARY_PATH.

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

Vérifions la version de SQLite3 dans Python3.

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

Depuis Python3, nous avons confirmé que la dernière version de SQLite, 3.31.1, peut être utilisée. Vérifions également avec la fonction native sqlite_version () de SQLite.

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

De même, à partir de Python3, nous avons confirmé que la dernière version de SQLite, 3.31.1, est disponible.

Utilisation de SQLite 3.20.1 avec Python3

Obtenez SQLite3 3.20.1 et compilez-le.

$ 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

Cette fois, spécifiez le chemin relatif de .libs dans la variable d'environnement LD_LIBRARY_PATH.

$ export LD_LIBRARY_PATH=./libs

Vérifions la version de SQLite3 dans Python3.

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

À partir de Python3, j'ai pu confirmer que le SQLite 3.20.1 construit peut être utilisé. En spécifiant le chemin relatif de .libs dans LD_LIBRARY_PATH, il est possible d'utiliser divers SQLites de Python3 en modifiant le répertoire dans l'environnement suivant.

$ 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

Résumé

Dans le cas de SQLite, contrairement à d'autres bases de données, il est difficile de changer la base de données pour se connecter avec les informations de pilote et de connexion, et je pensais que je devrais au pire améliorer le code source de Python3, mais j'utilise la variable d'environnement LD_LIBRARY_PATH. Cela a rendu étonnamment facile l'utilisation de différentes versions de SQLite3. De plus, comme je n'ai pas utilisé de privilèges root autres que l'installation de Pyhton3 cette fois, je pense que c'est une bonne idée d'essayer facilement la vérification du fonctionnement avec différentes versions.

Si vous trouvez des erreurs ou des préoccupations concernant la description, nous vous serions reconnaissants de bien vouloir nous faire part de vos commentaires dans la demande de modification ou le commentaire.

Recommended Posts

Utilisons différentes versions de SQLite3 de Python3!
Utilisez Thingsspeak de Python
Utiliser fluentd de python
Utilisez MySQL depuis Python
Utiliser plusieurs versions de l'environnement python avec pyenv
Diplômé de Python (x, y) et essayez de mélanger différentes versions de Python @Windows
Utiliser MySQL depuis Python
Utilisez mecab-ipadic-neologd de Python
Utilisons la version Python du module API Confluence.
Utilisons les données ouvertes de "Mamebus" en Python
Voyons comment utiliser def en python
Utilisons Python Janome facilement
Installer plusieurs versions de Python
Connectez-vous à sqlite depuis python
Utilisez l'API e-Stat de Python
Différent du type d'importation de python. Signification de depuis A import B
Utilisons usercustomize.py au lieu de sitecustomize.py
Utiliser la PNL Stanford Core à partir de Python
Utilisons tomotopy au lieu de gensim
Comment utiliser SQLite en Python
Existence du point de vue de Python
Lire et utiliser des fichiers Python à partir de Python
Utiliser de force Google Translate à partir de python
[Introduction à Python] Utilisons les pandas
Utilisez l'API kabu Station® de Python
Utilisez l'API Flickr de Python
[Introduction à Python] Utilisons les pandas
Utiliser le modèle entraîné fastText de Python
[Introduction à Python] Utilisons les pandas
Utiliser l'API Google Analytics de Python
Comment éviter la duplication des données lors de la saisie de Python vers SQLite.
Exécutez différentes versions des applications Python (wsgi) sur un environnement de développement
[Python] Résumé de l'utilisation des pandas
Utiliser le type de données PostgreSQL (jsonb) à partir de Python
Utiliser le groupe d'API d'apprentissage automatique A3RT de Python
Notes d'apprentissage depuis le début de Python 1
Je suis abasourdi par le comportement de filter () en raison des différentes versions de Python
Je veux utiliser jar de python
[Introduction à Python] Utilisons foreach avec Python
Utiliser l'API Google Cloud Vision de Python
Résumé de l'utilisation de la liste Python
[Python2.7] Résumé de l'utilisation du sous-processus
Notes d'apprentissage depuis le début de Python 2
[Question] Comment utiliser plot_surface de python
Récupérer le contenu de git diff depuis python
[Python] Comment utiliser deux types de type ()
Firebase: utilisez Cloud Firestore et Cloud Storage depuis Python
Étude de Python Hour7: Comment utiliser les classes
La réponse de "1/2" est différente entre python2 et 3
Un mémorandum sur l'appel de Python à partir de Common Lisp
[Bash] Obtenez la puissance de python de bash en utilisant la documentation ici
Utilisez OpenSeesPy quel que soit le système d'exploitation ou la version de Python
Résumé de l'utilisation de MNIST avec Python
environnement de développement python -utilisation de pyenv et virtualenv-
Je veux utiliser le solveur ceres de python
Résumé de l'étude de Python pour utiliser AWS Lambda
Envelopper C ++ avec Cython pour une utilisation à partir de Python
Utilisez le module Python nghttp2 de Homebrew de Python de pyenv
Utilisez Tor pour vous connecter depuis urllib2 [Python] [Mac]