# instinct: psycopg2はautocommit=Falseのためcommit漏れがidle-in-transactionを引き起こす

## 根本原因
psycopg2 はデフォルトで autocommit=False(明示的トランザクション)モード。
INSERT/UPDATE後に conn.commit() を呼び忘れると、トランザクションが開いたまま接続がプールに返却される。
その接続が idle-in-transaction 状態となり、他のクエリをブロックし、最終的にDBが応答不能になる。

## ポイント
- psycopg2 使用時は必ず try/except/finally で conn.commit() または conn.rollback() を呼ぶ
- コンテキストマネージャ `with conn:` を使うと自動コミット/ロールバックが保証される
- idle-in-transaction の兆候: `SELECT * FROM pg_stat_activity WHERE state = 'idle in transaction'`
- 単純な読み取り専用処理は `conn.autocommit = True` に設定して明示的トランザクションを無効化する

## 関連Issue
- vvv-bots#168