【发布时间】:2015-06-18 03:20:57
【问题描述】:
只是想知道如果在 pyodbc 中没有正确关闭连接会发生什么。
另外,连接前需要关闭光标吗?
在我的特定用例中,我在 .__del__() 方法的自定义 DB 类中包含了关闭连接的调用,但没有显式调用 close。
最佳做法是什么?
【问题讨论】:
只是想知道如果在 pyodbc 中没有正确关闭连接会发生什么。
另外,连接前需要关闭光标吗?
在我的特定用例中,我在 .__del__() 方法的自定义 DB 类中包含了关闭连接的调用,但没有显式调用 close。
最佳做法是什么?
【问题讨论】:
连接(及其关联的游标)在被删除时会自动关闭,因此它会自行清理。但是,如果您在多个地方进行连接,则需要明确关闭。此外,为了更加 Pythonic,总是最好是明确的。
另请注意:关闭连接而不提交更改将导致自动隐式回滚。
更多,参考:
【讨论】:
with 块来自动关闭和清理文件句柄等内容。对于数据库连接,这是否也被认为是好的(“最佳”?)做法?
with ... 块(“上下文管理器”)中使用 pyodbc connection 对象不会不会自动关闭该块末尾的连接。我刚刚在测试一些涉及 SQL Server 连接的代码时发现了这一点。有关 pyodbc 和上下文管理的更多讨论,请参阅 GutHub 上的 this issue。
with 语句,一旦您出块,它将自动关闭连接。 with connection.cursor() as cursor:那你就不用担心了。