使用psycopg2,连接和查询数据库的工作原理是这样的。
conn = psycopg2.connect('connection string')
with conn:
cur=conn.cursor()
cur.execute("SELECT * FROM pg_stat_activity") #simple query
rows = cur.fetchall()
for row in rows:
print (row)
经过试错,我发现 with conn
是绝对必要的,否则你会得到许多无法解释的锁。
我的问题是:有没有办法设置连接来避免使用它?
从 https:/www.psycopg.orgdocsusage.html,
警告 和文件对象或其他资源不同,退出连接的 与 阻止 不关闭连接但只有与之相关的事务。如果你想确保连接在某一点后被关闭,你仍然应该使用try-catch块。
conn = psycopg2.connect(DSN)
try:
# connection usage
finally:
conn.close()