import sqlite3, sys 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 = "D:/F/NewI/opencode/daily-workspace/projects/青年钢琴集体课/练习方案系统/data/piano_plans.db" prod_path = "D:/F/NewI/opencode/daily-workspace/projects/青年钢琴集体课/练习方案系统/temp_prod_piano.db" import shutil shutil.copy("\\\\?\\UNC\\47.115.32.206\\ipc$\\tmp\\prod_piano.db", prod_path) dev_rows = get_templates(dev_path) prod_rows = get_templates(prod_path) print("=== DEV TEMPLATES ===") for r in dev_rows: print(f"ID={r[0]} | {r[1]} | type={r[2]} | sort={r[3]}") print() print("=== PROD TEMPLATES ===") for r in prod_rows: print(f"ID={r[0]} | {r[1]} | type={r[2]} | sort={r[3]}") print() 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: print(f"=== ONLY IN DEV: IDs {only_dev} ===") for r in dev_rows: if r[0] in only_dev: print(f" ID={r[0]} | {r[1]} | type={r[2]} | sort={r[3]}") if only_prod: print(f"=== ONLY IN PROD: IDs {only_prod} ===") for r in prod_rows: if r[0] in only_prod: print(f" ID={r[0]} | {r[1]} | type={r[2]} | sort={r[3]}") if same_ids: print(f"=== IN BOTH (comparing) ===") 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: print(f" ID={i}:") print(f" DEV: name={d[1]} type={d[2]} sort={d[3]}") print(f" PROD: name={p[1]} type={p[2]} sort={p[3]}") else: print(f" ID={i}: IDENTICAL")