import psycopg2 conn = psycopg2.connect( host="192.168.0.61", port=55432, database="njts_acct", user="njts_app", password="njts_app2025" ) cur = conn.cursor() print("=" * 120) print("【清理步骤】删除通过复制创建的不正确数据") print("=" * 120) # 识别所有应该删除的记录: # ID 444(7月31日 遠達ビル)- 这是6月数据复制到7月的版本 # 以及其他类似的复制数据 delete_list = [ (444, "2025-07-31", "遠達ビル 事務所費用", "6月原始数据的7月复制版"), ] print("\n识别的应该删除的记录:\n") for entry_id, date, description, reason in delete_list: print(f"ID={entry_id} | {date} | {description}") print(f" 理由: {reason}") print() # 实际删除之前先验证 print("\n" + "=" * 120) print("【验证】使用DELETE指令删除这些记录") print("=" * 120) for entry_id, date, description, reason in delete_list: print(f"\n删除 ID={entry_id}...") # 先删除journal_lines cur.execute("DELETE FROM journal_lines WHERE journal_entry_id = %s", (entry_id,)) lines_deleted = cur.rowcount print(f" ✓ journal_lines: {lines_deleted}行删除") # 再删除journal_entries cur.execute("DELETE FROM journal_entries WHERE journal_entry_id = %s", (entry_id,)) entries_deleted = cur.rowcount print(f" ✓ journal_entries: {entries_deleted}件删除") conn.commit() print("\n" + "=" * 120) print("【完成】数据已删除") print("=" * 120) # 验证删除结果 print("\n验证遠達ビル 事務所費用现在的状态:\n") cur.execute(""" SELECT je.journal_entry_id, je.entry_date, je.description, COALESCE(SUM(jl.debit), 0) as debit_total, COALESCE(SUM(jl.credit), 0) as credit_total FROM journal_entries je LEFT JOIN journal_lines jl ON je.journal_entry_id = jl.journal_entry_id WHERE je.description LIKE '%遠達ビル 事務所費用%' AND je.is_deleted = false GROUP BY je.journal_entry_id, je.entry_date, je.description ORDER BY je.entry_date """) results = cur.fetchall() if results: for entry_id, entry_date, description, debit, credit in results: print(f"ID={entry_id} | {entry_date} | 借={debit:>10,.0f} 貸={credit:>10,.0f}") else: print("未找到遠達ビル相关记录(或全部已删除)") cur.close() conn.close() print("\n✓ 操作完成")