0% ont trouvé ce document utile (0 vote)
153 vues3 pages

Sqlite

SQLite permet de créer une base de données simplement en Python. Le document décrit comment importer le module SQLite, créer et manipuler des tables, insérer, modifier et récupérer des données, et gérer les transactions et erreurs.

Transféré par

aaa aaa
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
153 vues3 pages

Sqlite

SQLite permet de créer une base de données simplement en Python. Le document décrit comment importer le module SQLite, créer et manipuler des tables, insérer, modifier et récupérer des données, et gérer les transactions et erreurs.

Transféré par

aaa aaa
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

SQLite

SQLite a été conçu pour être intégré dans le programme même. Pour des projets plus ambitieux /
projets web le choix de MySQL serait plus judicieux.

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()

Base de
COMMIT ROLLBACK
comparaison
COMMIT valide les
ROLLBACK efface les modifications apportées
De base modifications apportées par la
par la transaction en cours.
transaction en cours.
Une fois que ROLLBACK est exécuté, la base
Après exécution de l'instruction
de données atteint son état précédent, c'est-à-
Effet COMMIT, la transaction ne peut
dire avant l'exécution de la première instruction
pas être ROLLBACK.
de la transaction.
COMMIT se produit lorsque la
ROLLBACK se produit lorsque la transaction
Occurrence transaction est exécutée avec
est abandonnée au milieu de l'exécution.
succès.
Syntaxe COMMIT; ROLLBACK;

Vous aimerez peut-être aussi