“ with psycopg2.connect”是否会自动关闭连接?

时间:2019-01-07 09:45:51

标签: python postgresql

我正在使用psycopg2库来处理与Postgress数据库的连接。

以下两种处理数据库连接的方法是否具有可比性?

片段1:

cnx = connect(user=<...>, password=<...>, host=<...>, database=<...>)
cursor = cnx.cursor()
cursor.execute(sql)
cnx.close()

片段2:

with psycopg2.connect(user=<...>, password=<...>, host=<...>, database=<...>) as cnx:
    cursor = cnx.cursor()
    cursor.execute(sql)

我特别对使用WITH自动关闭连接感兴趣吗?有人告诉我第二种方法更可取,因为它会自动关闭连接。但是,当我使用cnx.closed测试它时,它显示了打开的连接。

1 个答案:

答案 0 :(得分:1)

with块尝试退出以关闭(提交)事务,而不是连接。对于the documentation:

  

请注意,与文件对象或其他资源不同,退出连接的with块不会关闭连接,而只会关闭与之关联的事务[...]