SQLite est le système de base de données le plus cou­ram­ment utilisé dans le monde. Il offre la pos­si­bi­lité de mettre en place une base de données basée sur SQL pour une in­té­gra­tion directe à toutes sortes d’ap­pli­ca­tions. 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 tra­vail­ler de manière efficace avec ce système de base de données et Python, il est conseillé d’avoir de l’ex­pé­rience avec SQL comme avec Python. Dans ces con­di­tions, il est ef­fec­ti­ve­ment plus facile de mettre en place la base de données, puis de l’utiliser.

Conseil

Si vous souhaitez per­fec­tion­ner vos con­nais­sances relatives à Python, n’hésitez pas à consulter notre tutoriel Python.

Créer sa propre base de données : ins­truc­tions étape par étape

Quelques étapes suffisent pour mettre en place votre propre base de données SQLite3 avec Python. Une fois l’ins­tal­la­tion terminée, vous pouvez com­mu­ni­quer avec votre base de données par l’in­ter­mé­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 cor­res­pon­dant :

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 « Con­nec­tion », par l’in­ter­mé­diaire duquel vous pouvez com­mu­ni­quer 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 au­to­ma­tique.

É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 « Con­nec­tion » 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 re­la­tion­nelle depuis la connexion à cette dernière :

print(connection.total_changes)
python

Dans notre cas, la fonction renvoie nor­ma­le­ment 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à en­re­gis­tré des données dans votre base, la valeur renvoyée par la fonction peut tout à fait être dif­fé­rente.

Étape 4 : struc­tu­rer 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 en­re­gis­trer vos données, comme souvent avec les bases de données re­la­tion­nelles.

Pour ce faire, créez d’abord un objet « Cursor » en utilisant la fonction « cursor » pré­dé­fi­nie 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 cor­res­pon­dantes à votre base de données. La fonction reçoit alors des commandes, qui res­pec­tent la syntaxe SQL ha­bi­tuelle et prennent la forme de chaînes de ca­rac­tè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 en­re­gis­trer les mo­di­fi­ca­tions dans votre base de données, utilisez la fonction « commit » :

connection.commit()
python
Conseil

Vous voulez sau­ve­gar­der votre base de données SQLite3 sur votre propre serveur ? Si oui, vous pouvez faire votre choix entre dif­fé­rents types de serveurs. Pour les petites ap­pli­ca­tions et les faibles volumes de données, nous vous re­com­man­dons par exemple d’opter pour un vServer basé sur le Cloud. Par contre, pour les ap­pli­ca­tions d’en­tre­prise, nous vous con­seil­lons plutôt un serveur dédié.

Extraire des données

Bien sûr, SQLite3 et Python vous per­met­tent d’extraire et d’afficher des données de bases de données exis­tantes, 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’ex­pli­quons dans les ins­truc­tions étape par étape ci-dessus, vous devez créer les objets « Con­nec­tion » et « Cursor » cor­res­pon­dants. 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 cor­res­pon­dant à 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é­cla­ra­tion « print ».

Modifier des données exis­tantes

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 cor­res­pon­dantes à 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 « Con­nec­tion » et « Cursor ».

Supprimer des données

Utilisez le code suivant pour supprimer la ligne qui cor­res­pond à 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 cor­res­pond à l’« ID 2 ».

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

Utiliser des ca­rac­tères gé­né­riques

N’utilisez jamais les opé­ra­tions liées aux chaînes Python pour formuler des requêtes SQL dy­na­miques dans votre programme Python. Celles-ci risquent d’être ex­ploi­tées par des pirates in­for­ma­tiques dans le but d’attaquer votre programme par l’in­ter­mé­diaire d’in­jec­tions 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é­ci­fique. En tant que deuxième paramètre, vous pouvez alors décider de trans­mettre un n-uplet en Python à la fonction « execute », de manière à remplacer les points d’in­ter­ro­ga­tion.

Les requêtes suivantes sont donc équi­va­lentes :

# 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’in­ter­ro­ga­tion sont remplacés dans l’ordre dans lequel les variables sont ren­seig­nées dans le n-uplet.

Fermer la connexion à la base de données

Une fois toutes les opé­ra­tions ef­fec­tué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 cor­res­pon­dante, que vous pouvez appeler en passant di­rec­te­ment par votre object « Con­nec­tion ».

connection.close()
python
Aller au menu principal