Formation PUB400 : Python, 2018 Python et SQLite

4.5 Boucler dans les résultats d'une requête


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.

Parcourir les enregistrements

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.

Python

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 :

Résultat à l'écran

(2, 'Bourgeois', 'Philippe', '1161295')
(1, 'Desmarais', 'Louis', '1178793')
(4, 'Gaumond', 'Mathieu', '1121543')
(3, 'Meloche', 'Ariane', '1182286')
(5, 'Rousseau', 'Isabelle', '1119872')

Réagir correctement si aucun enregistrement n'a été retrouvé

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.

Python

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

Travailler avec les champs

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.

Python

for enreg in resultat:
    id = enreg[0]
    nomfamille = enreg[1]
    prenom = enreg[2]
    da = enreg[3]
    ...

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre