Bouebdelli University Année Universitaire
5éme Année Ingénieur Génie Elect. et Inf. Ind. 2025-2026
L A
Programmation Python Avancée
FA
Chapitre2 : Conception et gestion des bases de données
ER
avec SQLite
Objectif : GU
Créer et configurer des bases de données SQLite avec Python pour stocker et
organiser des données structurées dans des fichiers locaux.
ajih
Manipuler les données via des requêtes SQL depuis Python : insertion,
consultation, modification et suppression d'enregistrements.
Gestion des erreurs des bases de données SQLite.
dW
1 – Introduction sur les bases de données
Une base de données ( database en Anglais) est un conteneur dans lequel il est possible
me
de stocker des données de façon structurée. Cette structure permet au programme
informatique connecté à celle-ci de faire des recherches complexes.
Il existe plusieurs Modules et Logiciels de programmation base de données compatible
ha
avec le langage de programmation Python tels que MySQL, SQLite3, SQLAlchemy,
ORACLE, SQLServer.
Mo
Mohamed Wajih GUERFALA
1
Bouebdelli University Année Universitaire
5éme Année Ingénieur Génie Elect. et Inf. Ind. 2025-2026
Dans ce chapitre, nous allons se limiter sur le module SQLite3 dans nos applications qui
suit. SQLite3 est un module de conception et gestion des bases de données compatible
A
avec Python. L'un des avantages de SQLite3 est sa portabilité sur les OS les plus utilisés
L
par le grand public (Linux, Microsoft et Mac). Les domaines d’applications du
module SQLite3:
FA
Applications mobiles (iOS, Android)
Prototypage rapide et développement local
Applications embarquées et IoT
ER
2- Installation du Package SQLite & Logiciel SQLiteBrowser
Dans le OS Debian de la carte Raspberry Pi, il faut installer la bibliothèque " SQLite 3 "
GU
à travers l'interpréteur de commandes "LX Terminal".
sudo apt-get update
sudo apt-get install sqlite3
ajih
Il faut installer aussi le logiciel de gestion graphique des bases des données " SQLite
browser" comme suit :
dW
sudo apt-get install sqlitebrowser
3- Types de données SQLite et Python
me
SQLite supporte nativement les types suivants: NULL, INTEGER, REAL, TEXT, LPOB.
Voici un tableau qui récapitule la correspondance de types de données entre SQLite et
Python.
Python SQLite
ha
None NULL
int INTEGER/INT
Mo
float REAL/FLOAT
str TEXT/VARCHAR(n)
bytes BLOB
Mohamed Wajih GUERFALA
2
Bouebdelli University Année Universitaire
5éme Année Ingénieur Génie Elect. et Inf. Ind. 2025-2026
4 – Fonctions de création d’une base de données
4–a Fonctions de Base
A
Le langage de programmation SQL comporte un ensemble de fonctions de base pour la
L
création, connexion, exécution de commandes SQL et en fin, Validation et Annulation de
FA
ces commandes :
# Importez le module SQLite
import sqlite3
ER
# Création & connexion de bases de données SQLite :
# Les données seront stockées dans le fichier « [Link] »
conn = [Link]('[Link]')
# Créer une base de données temporaire en RAM
conn = [Link](':memory:')
GU
# Création d’un curseur d’exécution de commandes SQL
cursor = [Link]()
# Exécution de la requete (une ligne de commande SQL)
[Link](req)
# Exécution de la requete (multiples lignes de commandes SQL)
ajih
[Link](req)
# Validation des Transactions en cours
[Link]()
# Annulation des Transactions effectuées
[Link]()
dW
# Ferme la connexion à la base de données
[Link]()
4–b Création d’une table SQLite
La création d’une table dans une base de données se fait comme suit avec la commande
me
SQL « CREATE TABLE »
import sqlite3
conn = [Link]('[Link]')
ha
cursor = [Link]() # Créer un cursor
# Creation d’une Table dans la base de données
[Link]('''CREATE TABLE students
(Id INT PRIMARY KEY NOT NULL,
Mo
Name TEXT NOT NULL,
Age INT NOT NULL,
Class TEXT,
ScoreExam REAL);''')
[Link]() # Envoyer la requête
[Link]() # Fermer la connexion
Mohamed Wajih GUERFALA
3
Bouebdelli University Année Universitaire
5éme Année Ingénieur Génie Elect. et Inf. Ind. 2025-2026
4–c Suppression d’une table SQLite
La suppression d’une table dans une base de données se fait comme suit avec la
A
commande SQL « DROP TABLE »
L
# -*- coding: utf-8 -*-
FA
import sqlite3
conn = [Link]('[Link]')
cursor = [Link]() # Créer un cursor
# Supprimer une Table existant de la base de données
ER
[Link]('DROP TABLE students')
[Link]() # Envoyer la requête
[Link]() # Fermer la connexion
4–d Modification d’une table SQLite
GU
Pour modifier une table existante dans une base de données, il est possible d'ajouter ou
de supprimer une colonne en utilisant les commandes SQL « ADD TABLE » et « DROP
TABLE »
ajih
# -*- coding: utf-8 -*-
import sqlite3
conn = [Link]('[Link]')
cursor = [Link]() # Créer un cursor
dW
# Modifier une Table existant dans la base de données
# Ajouter une colonne dans une Table existante
[Link]('ALTER TABLE students ADD COLUMN School TEXT')
# Supprimer une colonne dans une Table existante
[Link]('ALTER TABLE students DROP COLUMN School')
me
[Link]() # Envoyer la requête
[Link]() # Fermer la connexion
5 – Fonctions de gestion d’une base de données CRUD
ha
Les fonctions CRUD représentent les quatre opérations fondamentales de gestion des
données dans une base de données. CREATE permet d'ajouter de nouveaux
Mo
enregistrements via la commande INSERT, construisant ainsi le contenu initial de la
base. READ regroupe les fonctions de consultation et d'extraction des données
existantes à l'aide des commandes SELECT et des méthodes de fetch.
Mohamed Wajih GUERFALA
4
Bouebdelli University Année Universitaire
5éme Année Ingénieur Génie Elect. et Inf. Ind. 2025-2026
UPDATE offre la possibilité de modifier des enregistrements déjà présents dans les
tables, corrigeant ou actualisant ainsi les informations stockées. Enfin, DELETE permet
A
de supprimer définitivement des enregistrements devenus obsolètes ou erronés.
L
Ensemble, ces quatre opérations forment le cycle complet de vie des données au sein
d'un système de gestion de base de données.
FA
5–a Insertion des données par «INSERT Operation»
Insertion d’une ligne de données dans une table SQLite se fait comme suit par la
ER
fonction de curseur « execute »
import sqlite3
conn = [Link]('[Link]')
cursor = [Link]() # Créer un cursor
# Insertion d’une ligne de données
GU
[Link]("INSERT INTO students (Id, Name, Age, Class, ScoreExam) \
VALUES (1, 'Ahmed', 22, '5GEII_GA', 15.00 )");
[Link]("INSERT INTO students (Id, Name, Age, Class, ScoreExam) \
ajih
VALUES (2, 'Malek', 23, '5GEII_GA', 16.00 )");
[Link]("INSERT INTO students (Id, Name, Age, Class, ScoreExam) \
VALUES (3, 'Imen', 22, '5GEII_GA', 15.5 )");
[Link]() # Envoyer la requête
dW
[Link]() # Fermer la connexion
Insertion Multiple Lignes de données dans une table SQLite se fait comme suit par la
fonction de curseur « executemany »
import sqlite3
me
conn = [Link]('[Link]')
cursor = [Link]() # Créer un cursor
# Insert Multiple records using the more secure "?" method
ha
StudentsInfo = [(4, 'Sarra', 22, '5GEII_GB', 14.5 ),
(5, 'Zied', 23, '5GEII_GB ', 13.75 ),
(6, 'Marwen', 24, '5GEII_GB ', 16.75 )]
[Link]("INSERT INTO students VALUES (?,?,?,?,?)",
Mo
StudentsInfo)
[Link]() # Envoyer la requête
[Link]() # Fermer la connexion
Mohamed Wajih GUERFALA
5
Bouebdelli University Année Universitaire
5éme Année Ingénieur Génie Elect. et Inf. Ind. 2025-2026
5–b Affichage des données «SELECT Operation»
Affichage des données d’une table SQLite se fait comme suit par la commande SQL
A
« SELECT »
L
import sqlite3
conn = [Link]('[Link]')
FA
cursor = [Link]() # Créer un cursor
# SELECT Operation
rowsST = [Link]("SELECT Id, Name, Age, Class, ScoreExam FROM
students")
ER
#rowsST = [Link]("SELECT * from students")
for row in rowsST:
print("Id = ", row[0])
print("Name = ", row[1])
print("Age = ", row[2])
print("Class = ", row[3])
print("ScoreExam = ", row[4], "\n")
[Link]()
[Link]()
# Envoyer la requête
# Fermer la connexion
GU
Il y a d'autres façons de sélectionner les données à afficher pour l'utilisateur, comme
ajih
« fetchone» et « fetchall»
[Link]() : Récupère une seule ligne à la fois depuis les résultats de la requête.
Idéal pour traiter les données ligne par ligne, surtout avec de gros volumes de données.
dW
[Link]() : Récupère toutes les lignes d'un coup sous forme de liste. Pratique
pour les petits jeux de données, mais attention à la consommation mémoire avec de gros
résultats.
import sqlite3
me
conn = [Link]('[Link]')
cursor = [Link]()
# SELECT Operations Diverses
[Link]("""SELECT Id, Name FROM students WHERE id=2""")
ha
response = [Link]()
print(response)
[Link]("""SELECT Id, Name, ScoreExam FROM students""")
rows = [Link]()
Mo
print(rows)
for row in rows:
print('{0} : {1} - {2}'.format(row[0],row[1], row[2]))
[Link]() # Envoyer la requête
[Link]() # Fermer la connexion
Mohamed Wajih GUERFALA
6
Bouebdelli University Année Universitaire
5éme Année Ingénieur Génie Elect. et Inf. Ind. 2025-2026
5–c Mise à jour des données par «UPDATE Operation»
Mise à jour des données d’une table SQLite se fait comme suit par la commande SQL
A
« UPDATE »
L
import sqlite3
FA
conn = [Link]('[Link]')
cursor = [Link]() # Créer un cursor
# UPDATE Operation
[Link]("UPDATE students SET ScoreExam = 15.0 WHERE Id = 1")
ER
[Link]() # Envoyer la requête
[Link]() # Fermer la connexion
GU
5–d Suppression des données par «DELETE Operation»
Suppression des données d’une table SQLite se fait comme suit par la commande SQL
« DELETE »
import sqlite3
ajih
conn = [Link]('[Link]')
cursor = [Link]() # Créer un cursor
# UPDATE Operation
[Link]("DELETE FROM students WHERE ID = 6;" )
dW
[Link]() # Envoyer la requête
[Link]() # Fermer la connexion
Exercice 1 :
me
Creer une Application SQL de gestion de stock d’un Magasin « TP1_Stock_Mag.py ».
Pour la gestion de stocks des produits dans ce Magasin, il faut creer une base de
donnees appelee « DB_StockMag.db » qui comporte deux Tables appelees « Products »
ha
et « StockProducts ».
Parametres de deux Tables sont les suivantes:
Mo
« Products »:
(productId INT PRIMARY KEY, Name TEXT, Ref TEXT, Price REAL)
« StockProducts »:
(stockId INT PRIMARY KEY, product_id INT, Quantity INT)
Mohamed Wajih GUERFALA
7
Bouebdelli University Année Universitaire
5éme Année Ingénieur Génie Elect. et Inf. Ind. 2025-2026
Remarque: Pour faire la liaison entre les deux Tables, nous allons utiliser un Forgien
Key dans la seconde Table « StockProducts » comme suit :
A
FOREIGN KEY (product_id) REFERENCES products (productId)
L
1) Apres la creation des deux Tables dans la base de donnees, Remplissez ces tables
par les donnees relatives a chaque table.
FA
2) Afficher les donnees de chaque table sur l’invite de commande,
3) Faire la mise a jour d’une Donnee « Quantity » d’un produit dans la table
StockProducts ,
ER
4) Effacer le produit ou le « productId == 3 » dans la table Products,
GU
ajih
dW
me
ha
Mo
Mohamed Wajih GUERFALA
8