Utiliser le module SQLite Pour importer le module SQLite: # coding: utf-8 impor
Utiliser le module SQLite Pour importer le module SQLite: # coding: utf-8 import sqlite3 Créer une base de données avec SQLite La aussi pour créer une base de données avec SQLite, rien de plus simple: conn = sqlite3.connect('ma_base.db') Lorsque vous executerez votre programme vous remarquerez que si la base n'existe pas encore, un fichier sera crée dans le dossier de votre programme. Et si celui-ci existe déjà il sera réutilisé. Vous pouvez bien évidemment choisir l'emplacement de votre base de données en renseignant un path, exemple: "/data/ma_base.db" . Il vous faudra cependant vérifier que le dossier existe avant de l'utiliser. Il est également possible de travailler avec une base de données de manière temporaire: conn = sqlite3.connect(':memory:') Lorsque le travail que vous attendiez est terminé, pensez à fermer la connexion vers la base: db.close() Créer une table avec SQLite Voici un exemple de création de table: cursor = conn.cursor() cursor.execute(""" CREATE TABLE IF NOT EXISTS users( id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE, name TEXT, age INTERGER ) """) conn.commit() Supprimer une table avec SQLite: cursor = conn.cursor() cursor.execute(""" DROP TABLE users """) conn.commit() Insérer des données Il existe plusieurs manière d'insérer des données, la plus simple étant celle-ci: cursor.execute(""" INSERT INTO users(name, age) VALUES(?, ?)""", ("olivier", 30)) Vous pouvez passer par un dictionnaire: data = {"name" : "olivier", "age" : 30} cursor.execute(""" INSERT INTO users(name, age) VALUES(:name, :age)""", data) Vous pouvez récupérer l'id de la ligne que vous venez d'insérer de cette manière: id = cursor.lastrowid print('dernier id: %d' % id) Il est également possible de faire plusieurs insert en une seule fois avec la fonction executemany : users = [] users.append(("olivier", 30)) users.append(("jean-louis", 90)) cursor.executemany(""" INSERT INTO users(name, age) VALUES(?, ?)""", users) Récupérer des données Vous pouvez récupérer la première ligne correspondant à votre recherche à l'aide de la fonction fetchone . cursor.execute("""SELECT name, age FROM users""") user1 = cursor.fetchone() print(user1) Le résultat est un tuple: ('olivier', 30) Vous pouvez récupérer plusieurs données de la même recherche en utilisant la fonction fetchall() . cursor.execute("""SELECT id, name, age FROM users""") rows = cursor.fetchall() for row in rows: print('{0} : {1} - {2}'.format(row[0], row[1], row[2])) L'objet curseur fonctionne comme un itérateur, invoquant la méthode fetchall() automatiquement: cursor.execute("""SELECT id, name, age FROM users""") for row in cursor: print('{0} : {1}, {2}'.format(row[0], row[1], row[2])) Pour la recherche spécifique,on utilise la même logique vu précédemment: id = 2 cursor.execute("""SELECT id, name FROM users WHERE id=?""", (id,)) response = cursor.fetchone() Modifier des entrées Pour modifier des entrées: cursor.execute("""UPDATE users SET age = ? WHERE id = 2""", (31,)) SQLite transactions : rollback Pour revenir au dernier commit , utilisez la méthode rollback . conn.rollback() Gestion des erreurs Il est recommandé de toujours encadrer les opérations sur des bases de données et d'anticiper des erreurs: import sqlite3 try: conn = sqlite3.connect('data/users.db') cursor = conn.cursor() cursor.execute(""" CREATE TABLE users( id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE, name TEXT, age INTERGER ) """) conn.commit() except sqlite3.OperationalError: print('Erreur la table existe déjà') except Exception as e: print("Erreur") conn.rollback() # raise e finally: conn.close() uploads/Science et Technologie/ python-base-de-donnee-sqlite.pdf
Documents similaires
-
18
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Dec 18, 2021
- Catégorie Science & technolo...
- Langue French
- Taille du fichier 0.0619MB