À venir jusqu'ici, les petits programmes que nous avons codés exécutaient à la queue-leu-leu trois opérations : se connecter à la base de données, effectuer la lecture et l'affichage puis refermer la connexion. Ceci est parfait dans une application qui ne fait que lire des données dans la base de données.
Ceci est moins pratique lorsqu'on désire insérer, modifier ou supprimer des données puis afficher les données résultantes. En effet, ce scénario impliquerait plusieurs boucles connexion - requête - déconnexion : une pour la lecture des données originales, une pour l'opération CRUD, et une troisième pour l'affichage des données résultantes. Pas très pratique.
Voici une structure de code plus intéressante. Elle consiste à utiliser le module atexit qui fait partie de la bibliothèque standard de Python. Le module atexit permet de programmer des actions à réaliser lorsque :
Ex :
...
import atexit
def fin_du_programme():
"""Déconnecte la base de données si la connexion avait réussi."""
global connexion
print('On sort du programme !')
if connexion:
print('Fermeture de la connexion.')
connexion.close()
else:
print('La connexion n\'avait pas été réussie, aucune fermeture nécessaire.')
...
########## programme principal ##########
atexit.register(fin_du_programme)
...
connexion = None
connexion = sqlite3.connect('file:mabd.db?mode=rw', uri=True)
...
fenetre.mainloop()
Remarquez que la ligne atexit.register(fin_du_programme) n'exécute pas la fonction fin_du_programme(). Son rôle est d'associer la fonction fin_du_programme() à l'événement « La fin du programme est arrivée ».
Attention : le code associé à atexit ne sera pas exécuté si le programme se termine de façon anormale (ex : quand il plante) ni lorsque le programme se termine par un appel à os._exit().
▼Publicité