English English

Warning: count(): Parameter must be an array or an object that implements Countable in /var/www/ard-site/templates/ardsite/library/Designer/Content/SingleArticle.php on line 198

SQLite en Python - Créer et accéder aux données des bases de données dans votre application Python

Ceci est une introduction à SQLite en Python. Vous apprendrez comment créer une base de données dans votre application Python. Mais aussi comment accéder et modifier les données de votre base de données.

Vous devez importer le module Python "sqlite3". (Commande "import sqlite3").
Toutes les opérations SQLite sont effectuées par le module Python "sqlite3" qui se connecte à la base de données SQLite et qui adhère à l'API de la base de données Python.

 

Création de la base de données

Une connexion à la base de données est créée par la méthode "connect" qui retourne un objet de connexion SQLite. Cet objet de connexion SQLite est utilisé pour accéder au "curseur" et pour valider les modifications sur la base de données.
Le "curseur" est utilisé pour exécuter des requêtes SQLite à travers la fonction "execute", qui sont utilisées pour créer ou accéder aux données de la base de données. La méthode execute() retourne aussi les lignes de la base de données, si elle est utilisée pour interroger les données de la base de données.
Ces lignes de la base de données peuvent être accédées par les méthodes fetchall(), fetchone() et fetchmany().

import sqlite3

try:
    sqliteCon = sqlite3.connect('Datebase_python.db')
    query_create_table = 	'''CREATE TABLE mytable (
                                id INTEGER PRIMARY KEY,
                                prename TEXT NOT NULL,
				surname TEXT NOT NULL,
                                countrycode INTEGER NOT NULL UNIQUE,
                                birthday datetime,
                                expenses REAL NOT NULL);'''

    cursor = sqliteCon.cursor()
    print("Connected to the database")
    cursor.execute(query_create_table)
    sqliteCon.commit()
    print("Database created")
    cursor.close()

except sqlite3.Error as error:
    print("Error while creating the table - ", error)
	
finally:
    if (sqliteCon):
        sqliteCon.close()
        print("database connection is closed")

La méthode commit() doit être appelée sur l'objet de connexion SQLite pour appliquer (persister) les changements sur la base de données.
Si vous avez fini d'accéder à votre base de données, alors n'oubliez pas de fermer le curseur et la connexion SQLite par la méthode close().

Types de bases de données SQLite importants

Ces types de bases de données (et leurs équivalents Python) sont utilisés pour enregistrer des valeurs dans vos bases de données SQLite :

  • NULL: – Python: none - Une valeur nulle.
  • INTEGER: – Python: int - Valeurs numériques. ex: 1,2,3,4
  • REAL: – Python: float - Une valeur en virgule flottante par exemple: 2.94
  • TEXT: – Python: str - Chaîne de texte qui utilise l'encodage UTF-8, UTF-16BE ou UTF-16LE
  • BLOB: – Python: bytes - Un blob de données (données binaires) utilisé pour stocker des images et des fichiers

Informations sur les classes d'erreur disponibles dans SQLite

Dans cet exemple la classe "Error" a été utilisée qui retourne tous les types d'erreurs survenues liées à SQLite, à votre base de données et à la connexion à la base de données.
La classe "Error" est une sous-classe de "Exception" et aussi la classe de base pour les autres types d'erreurs et les classes d'erreurs.
Autres classes d'erreurs :

sqlite3.DatabaseError
C'est une classe de base pour les erreurs qui sont liées à la base de données. Un exemple pour une erreur : Vous n'avez pas défini de fichier de base de données.

Cette classe "DatabaseError" possède les sous-classes importantes suivantes :

  • sqlite3.IntegrityError
    Erreurs concernant l'intégrité de la base de données. Par exemple: une vérification de clé étrangère échoue.
  • sqlite3.ProgrammingError
    Les erreurs qui se produisent à cause d'erreurs de programmation dans votre requête SQL. Par exemple : La table que vous voulez créer existe déjà.
  • sqlite3.OperationalError
    Erreurs concernant le fonctionnement et la connexion de la base de données. Par exemple : Le serveur de la base de données est en panne ou déconnecté accidentellement.

 

Accès aux données de la base de données

Vous pouvez interroger les données de votre base de données SQLite grâce à la méthode execute() qui récupère une commande SQL en argument. Ici nous utilisons la commande SQL "SELECT * FROM".

sqliteCon = sqlite3.connect('Datebase_python.db')
cursor = sqliteCon.cursor()
query_select_all = "SELECT * FROM mytable"
cursor.execute(query_select_all)
tablerows = cursor.fetchall()
print("Number of all rows: ", len(tablerows))
print("All rows in the table mytable: ")

for row in tablerows:
print("Id: ", row[0])
print("Prename: ", row[1]) 
print("Surname: ", row[2])
print("Country Code: ", row[3])
print("Birthday: ", row[4])
print("Expenses: ", row[4])
print("------\n")

cursor.close()
sqliteCon.close()

La méthode fetchall() retourne les lignes de la requête de la base de données (variable "query_select_all").

 

 

Insérer des données dans la base de données

Ajoutez une nouvelle ligne dans votre table par la commande SQL "INSERT INTO".

sqliteCon = sqlite3.connect('Datebase_python.db')
cursor = sqliteCon.cursor()

query_insert_into =    """INSERT INTO mytable
                          (id, prename, surname, countrycode, birthday, expenses) 
                           VALUES 
                          (1,'Max','Johnson','43','12-12-1990',5045.20)"""

count = cursor.execute(query_insert_into)
sqliteCon.commit()
cursor.close()

La méthode execute() exécute la commande SQL et retourne le nombre de lignes insérées.
Vous pouvez obtenir le nombre de lignes commitées (insérées, supprimées ou modifiées) grâce à cette méthode "rowcount":

cursor.rowcount

 

 

Supprimer des données de la base de données

Cela se fait de la même manière que dans le chapitre ("Insérer des données dans la base de données") ci-dessus.
Vous pouvez aussi passer des arguments (paramètres), par la méthode execute(). Ces paramètres stockent vos valeurs pour la commande SQL. La colonne de la table et la valeur (marquée dans la commande SQL par le point d'interrogation " ?") sont ajoutées entre parenthèses dans la méthode execute().

sqliteCon = sqlite3.connect('Datebase_python.db')
cursor = sqliteCon.cursor()

query_delete_row = "DELETE FROM mytable WHERE id = ?"
cursor.execute(query_delete_row, (id, 5))
sqliteCon.commit()

cursor.close()
sqliteCon.close()

 

Si vous voulez mettre à jour une ligne, utilisez la commande SQL "UPDATE" à la place. Exemple (un extrait) :

query_update_row = "UPDATE mytable SET name=:namevalue WHERE id = :idnumber"
cursor.execute(query_update_row, {"Peter": namevalue, "5": idnumber})
sqliteCon.commit()

Dans cet exemple, les paramètres (arguments) sont passés à travers les caractères de remplissage (namevalue et idnumber).

C'était une introduction à la programmation des bases de données SQLite en Python. Si vous voulez en savoir plus sur ce sujet, veuillez consulter les liens ci-dessous.

 

En savoir plus sur SQLite3 / Documentation de SQLite3 :
https://docs.python.org/3/library/sqlite3.html

DB Browser - Outil GUI pour visualiser et gérer la base de données SQLite :
https://sqlitebrowser.org/dl/

 

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.

Ok