2015-06-18 71 views
4

只是想知道如果连接没有在pyodbc中正确关闭会发生什么。如果你不关闭pyodbc连接会发生什么?

另外,我需要在连接之前关闭光标吗?

在我的特殊用例中,我包含了一个调用来关闭.__del__()方法中的自定义数据库类中的连接,但不显式调用close。

什么是最佳实践?

回答

4

连接(及其关联的游标)在被删除时会自动关闭,因此它会自行清理。但是,如果您要连接多个地方,则需要明确关闭。此外,要更Pythonic,它是总是更好明确。

另请注意:在不提交更改的情况下关闭连接将导致自动隐式回滚。

有关详细信息,并参考:

https://code.google.com/p/pyodbc/wiki/Connection#close

+0

GAH,你是绝对正确的,我的手指穿过得到。这是我在早上第一件事情时回答问题所得到的结果。不能忘记PEP-20! https://www.python.org/dev/peps/pep-0020/现在解决。 – FlipperPA

+0

在我看到的其他问题中,建议使用'with'块来自动关闭和清理文件句柄之类的东西。数据库连接也被认为是很好的(“最好的”?)练习吗? –

+1

回应我自己的评论,值得注意的是,在'with ...'block(“context manager”)中使用pyodbc'connection'对象不会自动关闭该块末尾的连接。我刚刚发现,在测试涉及SQL Server连接的代码时。有关pyodbc和上下文管理的更多讨论,请参阅GutHub上的[此问题](https://github.com/mkleehammer/pyodbc/issues/43)。 –

相关问题