#!/usr/bin/env python3 """Listet je Backup, wie viele Schlagwörter/Budget-Vorlagen/kategorisierte Buchungen darin stecken. So sieht man, welches Backup noch heil ist.""" import glob, os, sqlite3, sys muster = sys.argv[1] if len(sys.argv) > 1 else "/var/lib/certain-finance/backups/*.db" print(f"{'Datei':<34}{'Schlagw.':>9}{'Budget':>8}{'Buch.m.Kat':>12}") for f in sorted(glob.glob(muster)): try: con = sqlite3.connect(f"file:{f}?mode=ro", uri=True) def z(sql): try: return con.execute(sql).fetchone()[0] except sqlite3.Error: return "-" print(f"{os.path.basename(f):<34}" f"{z('SELECT COUNT(*) FROM categorization_rules'):>9}" f"{z('SELECT COUNT(*) FROM budget_template_lines'):>8}" f"{z('SELECT COUNT(*) FROM transactions WHERE category_id IS NOT NULL'):>12}") con.close() except Exception as e: print(f"{os.path.basename(f):<34} Fehler: {e}")