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:
@@ -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}")
|
||||
Reference in New Issue
Block a user