Dans une application graphique avec tkinter, il est possible d'afficher le résultat d'une requête SQLite dans une objet de type Text.
La méthode insert() permet d'ajouter des données à la fin du texte existant.
La constante os.linesep permet de passer à la ligne suivante.
Le résultat sera une série de lignes qui affichent les données brutes de chaque enregistrement retrouvé par la requête.
Ex :
#!/usr/bin/env python
from tkinter import *
import sqlite3
import sys
import traceback
import os
# fenêtre principale
fenetre = Tk()
fenetre.title('Système scolaire')
# libellé
libelle = Label(fenetre, text = 'Étudiants')
libelle.pack(padx = 10, pady = 10)
# texte
texte = Text(fenetre)
texte.pack(padx = 10, pady = 10)
# lecture dans la BD
try:
connexion = None
connexion = sqlite3.connect('file:systemescolaire.db?mode=rw', uri=True)
curseur = connexion.cursor()
requete = 'SELECT nomfamille, prenom, da FROM etudiants ORDER BY nomfamille, prenom'
curseur.execute(requete)
resultat = curseur.fetchall()
if len(resultat):
for enreg in resultat:
texte.insert(END, enreg[0] + ', ' + enreg[1] + ' - ' + str(enreg[2]) + os.linesep)
else:
texte.insert(END, 'Il n\'y a présentement aucun étudiant dans le système.')
except sqlite3.OperationalError as e:
if not connexion:
texte.insert(END, 'La configuration à la base de données a échoué.')
else:
texte.insert(END, 'Il y a une erreur dans la requête SQL.')
traceback.print_exc(file=sys.stdout)
except Exception as e:
texte.insert(END, 'Une erreur inattendue est survenue.')
traceback.print_exc(file=sys.stdout)
finally:
if connexion:
connexion.close()
# la fenêtre s'affiche puis attend les interactions de l'usager
fenetre.mainloop()
Et voici le résultat :
▼Publicité