Certaines requêtes SELECT peuvent retourner 0, 1 ou plusieurs enregistrements. Pour pouvoir manipuler les données qui correspondent à la requête, il faut les stocker dans une liste à l'aide de la commande fetchall().
Plus précisément, fetchall() retourne un tuple de tuples, autrement dit une liste immuable (les enregistrements) dont chaque élément est une liste immuable (les champs).
Il sera ensuite possible de manipuler la liste pour répondre à nos besoins.
Une boucle for nous permettra de parcourir les données obtenues par la requête. À chaque itération, on pourra travailler avec le prochain enregistrement de la liste. Les enregistrements apparaissent dans l'ordre spécifié par le ORDER BY de la requête.
curseur = connexion.cursor()
requete = 'SELECT id, nomfamille, prenom, da FROM etudiants ORDER BY nomfamille, prenom'
curseur.execute(requete)
resultat = curseur.fetchall()
for enreg in resultat:
print(enreg)
On obtiendra un résultat du genre :
(2, 'Bourgeois', 'Philippe', '1161295')
(1, 'Desmarais', 'Louis', '1178793')
(4, 'Gaumond', 'Mathieu', '1121543')
(3, 'Meloche', 'Ariane', '1182286')
(5, 'Rousseau', 'Isabelle', '1119872')
Il est possible qu'aucun enregistrement ne corresponde à la requête SELECT. Plutôt que de laisser l'usager se demander pourquoi il ne voit pas de données, le programme doit afficher un message clair.
curseur = connexion.cursor()
requete = 'SELECT id, nomfamille, prenom, da FROM etudiants ORDER BY nomfamille, prenom'
curseur.execute(requete)
resultat = curseur.fetchall()
# s'il y a au moins un enregistrement, on affiche les résultats
if len(resultat):
for enreg in resultat:
print(enreg)
else:
print('Il n\'y a présentement aucun étudiant dans le système')
Souvent, on aura besoin de manipuler les champs et non un enregistrement entier.
Chaque enregistrement est en fait un tableau. On pourra donc accéder aux champs à l'aide des indices du tableau.
for enreg in resultat:
id = enreg[0]
nomfamille = enreg[1]
prenom = enreg[2]
da = enreg[3]
...
▼Publicité