C6.4 : Utilisation des bases de données en python

Présentation succincte de la librairie sqlite3

Ouverture d'une connexion vers une base

import sqlite3
connexion = sqlite3.connect('base.db')
c = connexion.cursor()

La ligne 1 permet d'importer la librairie.

La ligne 2 ouvre une connexion avec la base de donnée.

La ligne 3 créé un objet cursor. Un tel objet permet :

Écriture d'une requête d'interrogation

A la suite du code précédent, l'exécution d'une requête se fait de la façon suivante :

c.execute('SELECT film, année FROM Films')

Une fois la requête exécutée, plusieurs actions sont possibles avec l'objet cursor :

Voici un exemple utilisant fetchall() :

liste_resultats = c.fetchall()
for enregistrement in liste_resultats:
    print(enregistrement)
 

Voici un autre exemple utilisant fetchone() :

enregistrement = c.fetchone()
while enregistrement != None:
    print(enregistrement)
    enregistrement = c.fetchone()

Dans les deux cas, une fois le traitement du résultat effectué, il est judicieux de détruire l'objet cursor.

c.close()

Écriture d'une requête de mise à jour ou de création

Que ce soit  :

la démarche est la même :

c.execute("... requête ...")
connexion.commit()

Après la requête (ligne 6), il est nécessaire de mettre à jour le fichier de la base de données avec la ligne 7.

Fermeture de la la connexion vers la base

...
c = connexion.close()

Écriture d'une requête avec des variables

La méthode execute de l'objet cursor permet d'écrire des requêtes à partir de variables de façon sécurisée.

import sqlite3
connexion = sqlite3.connect("base.db")
c = connexion.cursor()
c.execute("CREATE table people (nom, age)")
nom1 = "Alfred"
age1 = 72
c.execute("INSERT INTO people VALUES (?, ?)", (nom1, age1))
c.commit()
con.close()

Ce qui peut également s'écrire de la façon suivante 

import sqlite3
connexion = sqlite3.connect("base.db")
c = connexion.cursor()
c.execute("CREATE table people (nom, age)")
tuple_enreg = ("Alfred", 72)
c.execute("INSERT INTO people VALUES (?, ?)", tuple_enreg)
c.commit()
con.close()

Lien

Documentation officielle de la librairie sqlite3 : https://docs.python.org/fr/3/library/sqlite3.html.

Travail à faire

Créer un ensemble de fonctions qui permet de gérer des utilisateurs et leurs scores à un jeu (par exemple le chi/fou/mi écrit l'année dernière) à l'aide d'une base de données.