Utiliser une base de données Sqlite #
Le programme suivant crée une bdd sqlite dans le répertoire courant, met quelques données dedans et exécute deux requêtes.
import sqlite3
FILENAME = "bdd.db"
def create_db():
""" Crée la bdd si elle n'existe pas et s'assure qu'il y ait au moins 3 lignes dans la table
"""
with sqlite3.connect(FILENAME) as conn:
c= conn.cursor()
c.execute("CREATE TABLE if not exists accounts(login text primary key, password text)")
c.execute("INSERT OR REPLACE INTO accounts (login, password) VALUES ('toto', 'pass')")
c.execute("INSERT OR REPLACE INTO accounts (login, password) VALUES ('titi', 'pass2')")
c.execute("INSERT OR REPLACE INTO accounts (login, password) VALUES ('toti', 'pass3')")
conn.commit()
return
def requete_bdd_liste():
with sqlite3.connect(FILENAME) as conn:
c = conn.cursor()
# Si certaines parties de la requête sont fournies par des variables, utiliser
# la notation prévue pour avec des ? et NE PAS utiliser .format ou %
# Notez la virgule : ('%to%',)
c.execute("SELECT * from accounts WHERE login LIKE ?", ('%to%',))
res = c.fetchall()
return res
def requete_bdd_names():
with sqlite3.connect(FILENAME) as conn:
conn.row_factory = sqlite3.Row
c = conn.cursor()
c.execute("SELECT * from accounts WHERE login LIKE ?", ('%to%',))
res = c.fetchall()
return res
# ========== SCRIPT =====================
create_db()
print("Requete : on récupère une liste de tuples")
res = requete_bdd_liste()
print(res)
print("Requete : on accède aux champs par les titres de colonnes")
res = requete_bdd_names()
for r in res:
for name in r.keys():
print(name, r[name], end=" / ")
print()