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.
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.
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.
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
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