L'objectif de cette activité est de découvrir rapidement l'utilisation du module sqlite3 de Python afin d'accéder à une base de données et de la modifier en écrivant des requêtes SQL.
Exemples de programmes en Python |
Voici les programmes de base montrant comment utiliser le module sqlite3 en Python. Chaque programme peut être largement amélioré en fonction de vos besoins et de vos objectifs :
![]() |
|
![]() |
Remarque : le fichier exemple.db créé en Python est parfaitement lisible et modifiable avec l'outils Sqlite du logiciel UwAmp, mais aussi avec l'outils SQLite d'EduPython disponible dans la menu Outils -> Outils -> SQLite Data Browser :
Voici la structure de la table users dans la base de données exemple.db :
Et voici les données qui y sont enregistrées :
Application : enregistrer une liste de liste |
Problèmatique : nous voulons enregistrer l'état du jeu de puissance 4 en cours de partie afin de terminer la partie un autre jour. La grille du jeu Puissance 4 contenant 7 colonnes et 6 lignes est enregistrée dans Python sous forme d'une liste de liste 7x6 :
Dans cette structure de données, un 0 représente une case vide, un 1 représente un pion rouge et un 2 représente un pion bleu.
Nous allons voir 2 solutions différentes pour enregistrer une telle structure de données dans une table en SQL.
Solution 1 : on enregistre chaque case dans un champ de la table, avec 1 ligne de la grille par enregistrement.
La structure de la table est alors composées de 7 champs de type INTEGER correspondant aux 7 colonnes de la grille (champs nommés c1 à c7 dans le programme).
Comme chaque enregistrement de la table contient 1 ligne et qu'il y a 6 lignes dans la grille de Puissance 4, il faudra 6 enregistrements pour sauvegarder la grille entière dans la base de données.
Voici le programme (téléchargeable ci-dessous) qui enregistre 1 grille dans une table :
![]() |
Ce programme crée un fichier de base de données nommé grille_1.bd
En ouvrant ce fichier grille_1.db dans le logiciel SQLite, on retrouve la structure de la table composée de 7 champs de type entier :
Et voici le contenu des données : 6 enregistrements dans la table users, ce qui correspond à la grille entière :
Une fois le fichier grille_1.db créé, il faut un autre programme pour le lire et reconstituer la grille dans Python.
Voici le programme (téléchargeable ci-dessous) qui lit 1 grille dans une table :
![]() |
Chaque enregistrement de la table (il y en a 6 ici) est renvoyé sous forme d'un tuple. Aprés conversion des 6 tuples en liste, et ajout de ces 6 listes dans une liste grille[] initialement vide, on retrouve bien notre grille 7x6 sous forme d'une liste de liste :
Avantage de cette solution 1 : en consultant les données dans la table on retourve immédiatement la structure de la grille (6 lignes et 7 colonnes en clair)
Inconvénient de cette solution 1 : on ne peut enregistrer qu'une seule grille dans la base de données
Voyons maintenant la solution 2 qui permet d'enregistrer plusieurs grilles dans la même table.
Solution 2 : on enregistre une grille complète dans un seul champ de la table. Pour sauvegarder plusieurs grilles il suffit d'ajouter plusieurs enregistrements dans la table.
Voici le programme (téléchargeable ci-dessous) qui enregistre une grille par enregistrement dans une table :
![]() |
Ce programme crée un fichier de base de données nommé grille_2.bd
En ouvrant ce fichier grille_2.db dans le logiciel SQLite, on retrouve la structure de la table composée de 3 champs :
Il est possible d'enregistrer plusieurs grilles dans la tables users. Voici par exemple 3 grilles différentes enregistrées :
Une fois le fichier grille_2.db créé, il faut un autre programme pour le lire et reconstituer dans Python toutes les grilles enregistrées.
Voici le programme (téléchargeable ci-dessous) qui lit toutes les grilles enregistrées dans la table users :
![]() |
Chaque enregistrement de la table (accessible ici dans le tuple ligne) contient 3 champs :
Après conversion des chaînes de caractères ligne[2] en liste de liste grâce à la fonction eval() de Python, on retrouve bien toutes les grilles enregistrés (3 grilles dans cet exemple) sous forme d'une liste de liste de dimensions 7x6 :
Avantage de cette solution 2 : il est possible d'enregistrer plusieurs grilles dans la même table
Inconvénient de cette solution 2 : la lecture directe de la base de données ne redonne pas les grilles en clair. De plus, les grilles étant enregistrées sous forme de chaînes de caractères (et non sous forme d'entiers comme dans la solution 1, ni directement sous forme de listes) il faut utiliser la fonction eval() de Python pour convertir les chaînes de caractères en liste de liste directement exploitable par Pyhton.
Conclusion |
Vous savez maintenant utiliser le module sqlite3 afin d'accéder à une base de données en Python grâce aux requêtes SQL.
Le logiciel SQLite directement accessible depuis Python permet d'explorer facilement une base de données (structure de la table et contenu des données).
De plus, grâce à la sérialisation (fonction str(structure) en Python) et à la dé-sérialisation (fonction eval(chaine) en Python) il est possible d'enregistrer facilement sous forme de chaîne de caractères toutes sortes de structures de données dans un seul champ TEXT d'une table :
Réalisé par Jean-Christophe MICHEL
© Mars 2025