我正在编写一个脚本来访问已建立数据库中的数据,不幸的是,我正在破坏数据库。我可以从命令行重新创建问题:
[user@box tmp]# python 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() 一切都很好,但我的脚本无限循环,我认为我不需要打开和关闭每个循环的数据库连接。我认为这与我没有使用上面的数据这一事实没有任何关系,因为在我的真实脚本中我正在调用 fetchone() (在循环中)来处理数据。我不是数据库专家,所以我不确定还有什么其他信息有用。如上所示,我的 postgres 版本是 9.1.0,python 是 2.7.2。