使用psycopg2如何避免使用连接上下文管理器?

问题描述 投票:0回答:1

使用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 是绝对必要的,否则你会得到许多无法解释的锁。

我的问题是:有没有办法设置连接来避免使用它?

python postgresql psycopg2
1个回答
1
投票

https:/www.psycopg.orgdocsusage.html,

警告 和文件对象或其他资源不同,退出连接的 阻止 不关闭连接但只有与之相关的事务。如果你想确保连接在某一点后被关闭,你仍然应该使用try-catch块。

   conn = psycopg2.connect(DSN)
   try:  
     # connection usage 
   finally:  
     conn.close()  
© www.soinside.com 2019 - 2024. All rights reserved.