SQLite3 avec Python

SQLite est le système de base de données le plus couramment utilisé dans le monde. Il offre la possibilité de mettre en place une base de données basée sur SQL pour une intégration directe à toutes sortes d’applications. Python prend également en charge SQLite3, avec son propre module.

Utiliser SQLite3 avec Python

Vous pouvez intégrer SQLite à Python sous la forme d’un module. Pour travailler de manière efficace avec ce système de base de données et Python, il est conseillé d’avoir de l’expérience avec SQL comme avec Python. Dans ces conditions, il est effectivement plus facile de mettre en place la base de données, puis de l’utiliser.

Conseil

Si vous souhaitez perfectionner vos connaissances relatives à Python, n’hésitez pas à consulter notre tutoriel Python.

Créer sa propre base de données : instructions étape par étape

Quelques étapes suffisent pour mettre en place votre propre base de données SQLite3 avec Python. Une fois l’installation terminée, vous pouvez communiquer avec votre base de données par l’intermédiaire des commandes SQL que vous avez l’habitude d’utiliser.

Étape 1 : importer SQLite3 dans Python

Pour accéder aux fonctions propres à SQLite3 avec Python, vous devez commencer par importer le module correspondant :

import sqlite3
python

Étape 2 : créer la base de données

Dans cette étape, vous devez créer votre propre base de données à l’aide de la fonction « connect() » de SQLite. Celle-ci renvoie alors un objet « Connection », par l’intermédiaire duquel vous pouvez communiquer avec votre base de données. La fonction « connect » permet d’établir une connexion avec une base de données (ici nommée « test »). Pour l’appeler, utilisez le code suivant :

connection = sqlite3.connect("test.db")
python

Le paramètre de transfert de la fonction prend la forme d’un fichier de base de données. Si vous n’avez encore créé aucun fichier de base de données du nom de « test.db » et que vous appelez la fonction « connect », la création de ce fichier sera automatique.

Étape 3 : vérifier la bonne création de la base de données

Une fois arrivé là et si vous le souhaitez, vous pouvez vérifier la bonne création de votre base de données SQLite3. Pour ce faire, appelez la fonction « total_changes » sur l’objet « Connection » que vous venez de créer. Celle-ci vous indique alors le nombre de lignes de tableau modifiées dans votre base de données relationnelle depuis la connexion à cette dernière :

print(connection.total_changes)
python

Dans notre cas, la fonction renvoie normalement la valeur « 0 », car nous n’avons encore utilisé aucune commande SQL (notre base de données est donc vide). Toutefois, si vous avez déjà enregistré des données dans votre base, la valeur renvoyée par la fonction peut tout à fait être différente.

Étape 4 : structurer votre base de données

Pour ajouter des données à votre base SQLite3 avec Python, vous devez commencer par créer le tableau dans lequel vous souhaitez enregistrer vos données, comme souvent avec les bases de données relationnelles.

Pour ce faire, créez d’abord un objet « Cursor » en utilisant la fonction « cursor » prédéfinie dans SQLite3 avec Python. Celui-ci vous permet alors d’envoyer des commandes SQL à votre base de données. Vous trouverez ci-dessous le code dont vous avez besoin pour y parvenir :

cursor = connection.cursor()
python

Ensuite, utilisez la fonction « execute » du module SQLite3 pour envoyer les commandes SQL correspondantes à votre base de données. La fonction reçoit alors des commandes, qui respectent la syntaxe SQL habituelle et prennent la forme de chaînes de caractères. Ainsi, pour créer une base de données « example » et des colonnes « id », « name » et « age », le code Python à utiliser se présente comme suit :

cursor.execute("CREATE TABLE IF NOT EXISTS example (id INTEGER, name TEXT, age INTEGER)")
python

Étape 5 : ajouter des données

Vous avez besoin de la même syntaxe pour créer un tableau que pour ajouter des données à celui-ci :

cursor.execute("INSERT INTO example VALUES (1, alice, 20)")
cursor.execute("INSERT INTO example VALUES (2, ’bob’, 30)")
cursor.execute("INSERT INTO example VALUES (3, ’eve’, 40)")
python

Le code ci-dessus vous a permis d’ajouter trois entrées au tableau de votre base de données « example ».

Pour enregistrer les modifications dans votre base de données, utilisez la fonction « commit » :

connection.commit()
python
Conseil

Vous voulez sauvegarder votre base de données SQLite3 sur votre propre serveur ? Si oui, vous pouvez faire votre choix entre différents types de serveurs. Pour les petites applications et les faibles volumes de données, nous vous recommandons par exemple d’opter pour un vServer basé sur le Cloud. Par contre, pour les applications d’entreprise, nous vous conseillons plutôt un serveur dédié.

Extraire des données

Bien sûr, SQLite3 et Python vous permettent d’extraire et d’afficher des données de bases de données existantes, et pas seulement de créer vos propres bases de données. Pour ce faire, vous devez commencer par vous connecter à la base de données de votre choix. Comme nous l’expliquons dans les instructions étape par étape ci-dessus, vous devez créer les objets « Connection » et « Cursor » correspondants. Ensuite, formulez votre requête SQL, envoyez-la à votre base de données avec la fonction « execute » et affichez toutes les lignes ainsi obtenues à l’aide de la fonction « fetchall » :

cursor.execute("SELECT * FROM example")
rows = cursor.fetchall()
for row in rows:
    print(row)
python

La fonction « fetchall » renvoie une liste de lignes correspondant à votre requête. Si vous souhaitez afficher toutes ces lignes sur la console, vous pouvez utiliser une boucle for en Python en l’associant à une déclaration « print ».

Modifier des données existantes

SQLite3 prenant en charge l’ensemble de commandes SQL, vous pouvez aussi modifier ou supprimer les données de votre base de données. Pour ce faire, il vous suffit d’envoyer les commandes SQL correspondantes à votre base de données. Toutefois, pour y parvenir, vous devez également commencer par établir une connexion avec votre base de données et par créer des objets « Connection » et « Cursor ».

Supprimer des données

Utilisez le code suivant pour supprimer la ligne qui correspond à l’« ID 1 ».

cursor.execute("DELETE FROM example WHERE id = 1")
python

Modifier les données

À l’aide de la commande suivante, vous pouvez modifier l’âge dans la ligne qui correspond à l’« ID 2 ».

cursor.execute("UPDATE example SET age = 31 WHERE id = 2")
python

Utiliser des caractères génériques

N’utilisez jamais les opérations liées aux chaînes Python pour formuler des requêtes SQL dynamiques dans votre programme Python. Celles-ci risquent d’être exploitées par des pirates informatiques dans le but d’attaquer votre programme par l’intermédiaire d’injections SQL. Avec Python, il convient de faire appel au caractère générique SQL « ? » et de l’utiliser dans le cadre de votre requête SQL envoyée avec « execute » plutôt que de choisir une valeur spécifique. En tant que deuxième paramètre, vous pouvez alors décider de transmettre un n-uplet en Python à la fonction « execute », de manière à remplacer les points d’interrogation.

Les requêtes suivantes sont donc équivalentes :

# Direkte SQL-Anfrage
cursor.execute("UPDATE example SET age = 31 WHERE id = 2")
# SQL-Anfrage mit Platzhaltern
age_var = 31
id_var = 2
cursor.execute("UPDATE example SET age = ? WHERE id = ?", (age_var, id_var))
python

Attention : dans la requête SQL, les points d’interrogation sont remplacés dans l’ordre dans lequel les variables sont renseignées dans le n-uplet.

Fermer la connexion à la base de données

Une fois toutes les opérations effectuées sur votre base de données, n’oubliez pas de fermer la connexion à cette dernière. Le module SQLite3 avec Python propose ici aussi une fonction Python correspondante, que vous pouvez appeler en passant directement par votre object « Connection ».

connection.close()
python