← Tous les exercices
Sauvegarder, restaurer, vérifier les objets avancés
Partie 5 · ★★★
La sauvegarde doit inclure les données et la logique SQL (triggers, procédures, événements), et un test minimal de restauration doit vérifier que ces objets reviennent. Avec SQLite, iterdump() produit un dump SQL texte de la base (tables, données, triggers) et executescript() le rejoue. (Outils propres à SQLite : exemple adapté ; le cours cite l'export SQL ou dump.)
Complète : crée le dump, restaure-le dans une nouvelle base con2, puis vérifie les comptes et la présence du trigger.
import sqlite3 con = sqlite3.connect(":memory:", isolation_level=None) con.executescript(""" CREATE TABLE marche(id INTEGER PRIMARY KEY, titre TEXT); CREATE TABLE log_metier(id INTEGER PRIMARY KEY, action TEXT, marche_id INTEGER); CREATE TRIGGER trg_log_insert AFTER INSERT ON marche BEGIN INSERT INTO log_metier(action, marche_id) VALUES ('INSERT', NEW.id); END; """) con.execute("INSERT INTO marche(titre) VALUES ('Classes modulaires')") con.execute("INSERT INTO marche(titre) VALUES ('Base vie')") dump = "\n".join(con.___()) con2 = sqlite3.connect(":memory:") con2.___(dump) n_marche = con2.execute("SELECT COUNT(*) FROM marche").fetchone()[0] n_log = con2.execute("SELECT COUNT(*) FROM log_metier").fetchone()[0] triggers = [r[0] for r in con2.execute("SELECT name FROM sqlite_master WHERE type = 'trigger'")]
Ctrl/⌘+Entrée