我正在使用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测试它时,它显示了打开的连接。
答案 0 :(得分:1)
with块尝试退出以关闭(提交)事务,而不是连接。对于the documentation:
请注意,与文件对象或其他资源不同,退出连接的with块不会关闭连接,而只会关闭与之关联的事务[...]