【发布时间】:2018-10-31 04:51:47
【问题描述】:
我正在学习如何将 PostgreSQL 数据库与 Python (3.6) 的 psycopg2 模块一起使用。我无法确定在什么情况下我应该手动关闭我的连接。 根据the docs:
与文件对象或其他资源不同,退出连接 block 不会关闭连接,只会关闭关联的事务 with it:一个连接不仅可以用在 with 语句中,而且 每个 with 块都被有效地包装在一个单独的事务中
然后是示例代码sn-p:
conn = psycopg2.connect(DSN)
with conn:
with conn.cursor() as curs:
curs.execute(SQL1)
with conn:
with conn.cursor() as curs:
curs.execute(SQL2)
conn.close()
但是,我习惯于使用 with-as 进行上下文管理,即类似
with psycopg2.connect(DSN) as conn:
with conn.cursor() as curs:
curs.execute(SQL)
这是一个合理的方法,还是在运行上述之后仍然会有一个打开的连接?如果是这样,我该如何关闭它,因为 'conn' 不再存在?
【问题讨论】:
标签: python postgresql psycopg2