feat: Skript zum Prüfen der Datenbank-Sicherungen

Listet je Backup, wie viele Schlagwörter, Budget-Vorlagen und kategorisierte
Buchungen darin stecken. Nach einem Datenverlust sieht man damit auf einen Blick,
welche Sicherung noch vollständig ist – statt nach Zeitstempel zu raten.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Guido
2026-08-21 14:23:12 +02:00
co-authored by Claude Opus 4.8
parent 35d89b2b8f
commit 33bbc535cd
+22
View File
@@ -0,0 +1,22 @@
#!/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}")