"""校验备份文件可被标准 SQLite 打开并含数据(Windows 自带 Python 或 Miniconda 均可运行)。""" import glob import os import sqlite3 import sys pattern = os.path.join(sys.argv[1], "*.db") files = sorted(glob.glob(pattern), key=os.path.getmtime) if not files: print("FAIL: 没有找到备份文件") sys.exit(1) path = files[-1] print("备份文件:", os.path.basename(path), os.path.getsize(path), "字节") con = sqlite3.connect(path) tables = [r[0] for r in con.execute( "select name from sqlite_master where type='table' order by name")] print("表:", ", ".join(tables)) for t in ("users", "packages", "customers", "subscriptions", "sub_adjustments", "checkins", "op_logs"): if t in tables: n = con.execute("select count(*) from %s" % t).fetchone()[0] print(" %-16s %d 行" % (t, n)) con.close() print("OK")