how to close a old connection between psycopg2 and postgresql?
我一直在使用psycopg2来控制多模块模型(我的博士论文)中的本地postgresql服务器。
一段时间后,我在模型中出现错误并且它保持了一个ghost连接,当我使用与postgresql服务器的新连接运行模型时,这会引起麻烦,它会调用模型的其他模块。
在我的计算机上同时显示postgresql的多个连接,总共十个。 较旧的连接在属性中具有35天前的最后修改。
我卸载了python,postgresql并删除了数据库,之后我又重新安装了一切,问题仍然存在。
如果有任何客人或帮助,我很感激。
如果您是超级用户,则可以按照此处的答案中所述关闭现有连接。
根据您的应用程序,您还可以查看修改应用程序连接到数据库的方式。 创建一个名为mydb.py的文件,例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import psycopg2 import psycopg2.pool FROM contextlib import contextmanager dbpool = psycopg2.pool.ThreadedConnectionPool(host=<<YourHost>>, port=<<YourPort>>, dbname=<<YourDB>>, USER=<<YourUser>>, password=<<yourpassword>>, ) @contextmanager def db_cursor(): conn = dbpool.getconn() try: WITH conn.cursor() AS cur: yield cur conn.commit() EXCEPT: conn.rollback() raise finally: dbpool.putconn(conn) |
然后您的代码可以使用:
1 2 3 4 5 | import mydb def myfunction(): WITH mydb.db_cursor() AS cur: cur.execute("""Select * from blahblahblah...""") |