如何关闭psycopg2和postgresql之间的旧连接?

我一直在使用psycopg2来控制本地postgresql服务器在多模块模型(我的博士论文)中。如何关闭psycopg2和postgresql之间的旧连接?

经过一段时间我在模型中出现错误,并且它保留了ghost连接,当我使用与postgresql服务器的新连接运行模型时,它引起了麻烦,它调用模型的其他模块。

在我的电脑上同时显示postgresql的多个连接,共十个。旧连接在属性中有35天前的最后修改。

我卸载python,postgresql并删除数据库,之后我再次安装一切,问题仍然存在。

如果有任何客人或帮助,我很感激。

回答:

如果你是一个超级用户,您可以关闭现有连接作为答案here.

根据您的应用描述,你也可以看看修改应用程序如何连接到数据库。创建一个名为mydb.py的东西,如文件:

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)

那么你的代码可以使用:

import mydb 

def myfunction():

with mydb.db_cursor() as cur:

cur.execute("""Select * from blahblahblah...""")

以上是 如何关闭psycopg2和postgresql之间的旧连接? 的全部内容, 来源链接: utcz.com/qa/260335.html

回到顶部