確立されたデータベースのデータにアクセスするスクリプトを書いていますが、残念ながら 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です。