確立されたデータベースのデータにアクセスするスクリプトを書いていますが、残念ながら DB を壊しています。コマンドラインから問題を再現できます:
[user@box tmp]# パイソン
Python 2.7.2 (デフォルト、2011 年 9 月 19 日 15:02:41)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] linux2 上
詳細については、「ヘルプ」、「著作権」、「クレジット」、または「ライセンス」と入力してください。
>>> pgdbをインポート
>>> db = pgdb.connect('localhost:my_db:postgres')
>>> cur = db.cursor()
>>> cur.execute("SELECT * FROM mytable LIMIT 10")
>>> cur.close()
>>>
この時点で、mytable へのアクティビティは大幅に低下し、「select * from pg_stat_activity」は接続を「IDLE in transaction」と表示します。db.close() を呼び出すとすべて問題ありませんが、スクリプトが無限にループし、ループごとに db 接続を開いたり閉じたりする必要があるとは思いませんでした。上記のデータを使用していないという事実とは何の関係もないと思います。実際のスクリプトでは、(ループで) fetchone() を呼び出してデータを処理しています。私はあまり DB に詳しくないので、他にどのような情報が役立つかわかりません。上記のように、私のpostgresバージョンは9.1.0で、pythonは2.7.2です。