import sqlite3 def get_templates(db_path): conn = sqlite3.connect(db_path) c = conn.cursor() c.execute("SELECT id, name, type, sort_order FROM templates ORDER BY type, sort_order") rows = c.fetchall() conn.close() return rows dev_path = r"D:\F\NewI\opencode\daily-workspace\projects\青年钢琴集体课\练习方案系统\data\piano_plans.db" prod_path = r"D:\F\NewI\opencode\daily-workspace\projects\青年钢琴集体课\练习方案系统\temp_prod.db" dev_rows = get_templates(dev_path) prod_rows = get_templates(prod_path) with open("temp_templates_compare.txt", "w", encoding="utf-8") as f: f.write("=== DEV TEMPLATES ===\n") for r in dev_rows: f.write(f"ID={r[0]} | {r[1]} | type={r[2]} | sort={r[3]}\n") f.write("\n=== PROD TEMPLATES ===\n") for r in prod_rows: f.write(f"ID={r[0]} | {r[1]} | type={r[2]} | sort={r[3]}\n") f.write("\n=== COMPARISON ===\n") dev_ids = {r[0] for r in dev_rows} prod_ids = {r[0] for r in prod_rows} only_dev = dev_ids - prod_ids only_prod = prod_ids - dev_ids same_ids = dev_ids & prod_ids if only_dev: f.write(f"ONLY IN DEV: IDs {only_dev}\n") for r in dev_rows: if r[0] in only_dev: f.write(f" ID={r[0]} | {r[1]} | type={r[2]} | sort={r[3]}\n") if only_prod: f.write(f"ONLY IN PROD: IDs {only_prod}\n") for r in prod_rows: if r[0] in only_prod: f.write(f" ID={r[0]} | {r[1]} | type={r[2]} | sort={r[3]}\n") if same_ids: dev_map = {r[0]: r for r in dev_rows} prod_map = {r[0]: r for r in prod_rows} for i in sorted(same_ids): d = dev_map[i] p = prod_map[i] if d != p: f.write(f"DIFF ID={i}:\n") f.write(f" DEV: name={d[1]} type={d[2]} sort={d[3]}\n") f.write(f" PROD: name={p[1]} type={p[2]} sort={p[3]}\n") else: f.write(f"ID={i}: IDENTICAL\n") print("done")