想知道如果在pyodbc中连接没有正确关闭会发生什么。 另外,在关闭连接之前是否需要关闭光标? 在我的特定用例中,我在自定义DB类的.__del__()方法中包含了一次关闭连接的调用,但没有显式调用关闭。 最佳实践是什么?
当连接被删除时(以及它们相关的游标),它们会自动关闭,因此可以自我清理。但是,如果您在多个位置连接,您需要显式关闭连接。而且,为了更符合Pythonic风格,显式关闭连接始终更好。 还要注意:在不提交更改的情况下关闭连接将导致自动隐式回滚。 有关更多信息和参考,请访问: https://github.com/mkleehammer/pyodbc/wiki/Connection#close
with
块来自动关闭和清理诸如文件句柄之类的东西。那对于数据库连接来说,这被认为是良好的(最佳的?)实践吗? - Gord Thompsonconnection
对象在with ...
块("上下文管理器")中时,并不会自动在该块结束时关闭连接。我刚在测试涉及 SQL Server 连接的一些代码时发现了这一点。关于 pyodbc 和上下文管理的更多讨论,请参见 GutHub 上 此问题。 - Gord Thompsonwith
语句,它会在你退出块后自动关闭连接。with connection.cursor() as cursor:
这样你就不必担心了。 - FlipperPA