80 lines
1.9 KiB
Python
80 lines
1.9 KiB
Python
import psycopg2
|
|
|
|
conn = psycopg2.connect(
|
|
host="192.168.0.61",
|
|
port=55432,
|
|
database="njts_acct",
|
|
user="njts_app",
|
|
password="njts_app2025"
|
|
)
|
|
|
|
cur = conn.cursor()
|
|
|
|
# 删除 ID 445
|
|
print("=" * 100)
|
|
print("ID=445 の削除処理開始")
|
|
print("=" * 100)
|
|
|
|
entry_id = 445
|
|
|
|
# 確認
|
|
cur.execute("""
|
|
SELECT journal_entry_id, entry_date, description, is_latest, is_deleted
|
|
FROM journal_entries
|
|
WHERE journal_entry_id = %s
|
|
""", (entry_id,))
|
|
|
|
result = cur.fetchone()
|
|
if result:
|
|
entry_id_val, entry_date, description, is_latest, is_deleted = result
|
|
print(f"\n削除対象:")
|
|
print(f" ID: {entry_id_val}")
|
|
print(f" 日付: {entry_date}")
|
|
print(f" 摘要: {description}")
|
|
print(f" is_latest: {is_latest}")
|
|
print(f" is_deleted: {is_deleted}")
|
|
|
|
# 明細行の確認
|
|
cur.execute("""
|
|
SELECT account_id, debit, credit
|
|
FROM journal_lines
|
|
WHERE journal_entry_id = %s
|
|
""", (entry_id,))
|
|
|
|
lines = cur.fetchall()
|
|
print(f"\n 明細行({len(lines)}行):")
|
|
for account_id, debit, credit in lines:
|
|
print(f" - account_id={account_id}: 借={debit}, 貸={credit}")
|
|
|
|
# 削除処理
|
|
print("\n削除実行中...")
|
|
|
|
# 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✅ 削除完了!")
|
|
print(f" 合計削除: {entries_deleted}仕訳, {lines_deleted}行")
|
|
|
|
# 削除後の確認
|
|
cur.execute("""
|
|
SELECT COUNT(*) as cnt
|
|
FROM journal_entries
|
|
WHERE journal_entry_id = %s
|
|
""", (entry_id,))
|
|
|
|
verify = cur.fetchone()
|
|
if verify[0] == 0:
|
|
print(f"\n✓ ID {entry_id} は完全に削除されました")
|
|
|
|
cur.close()
|
|
conn.close()
|