gpt4 book ai didi

python - with block 是否在退出时正确关闭 psycopg2 连接和光标处理?

转载 作者:行者123 更新时间:2023-11-29 12:50:18 24 4
gpt4 key购买 nike

考虑以下两种方法:

手动关闭

import psycopg2

conn = psycopg2.connect('dbname=foo')
csor = conn.cursor()

csor.execute(qry)
conn.commit()

csor.close()
conn.close()

带 block

with psycopg2.connect('dbname=foo') as conn:
with conn.cursor() as csor:
csor.execute(qry)
conn.commit()

我的问题是,这两种方法是否等同?我担心 with block 可能会破坏对变量的引用但保持连接打开。根据我运行的一些测试,我认为情况并非如此。但是,如果有更多经验的人帮助确认我的理解,那就太好了。谢谢!

最佳答案

这在 documentation 中有解释:

When a connection exits the with block, if no exception has been raised by the block, the transaction is committed. In case of exception the transaction is rolled back

[...]

A connection can be used in more than a with statement and each with block is effectively wrapped in a separate transaction

因此,没有引用被销毁,也没有连接被关闭,但是提交完成了。

关于python - with block 是否在退出时正确关闭 psycopg2 连接和光标处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55684502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com