在SQLite中关闭游标或连接之间有什么区别吗?

时间:2016-09-21 12:03:35

标签: python sqlite cursor

在我完成数据库后,我一直在使用命令cur.close()

import sqlite3

conn = sqlite3.connect('mydb')
cur = conn.cursor()
# whatever actions in the database
cur.close()

但是,我在某些情况下只看到了以下方法:

import sqlite3

conn = sqlite3.connect('mydb')
cur = conn.cursor()
# whatever actions in the database
cur.close()
conn.close()

在官方documentation中,有时光标会关闭,有时会连接,有时也会关闭。

我的问题是:

  1. cur.close()conn.close()之间有什么区别吗?
  2. 一旦我完成(或者我必须关闭两者),是否足以关闭一个?如果是这样,哪一个更好?

1 个答案:

答案 0 :(得分:1)

[关闭游标]

如果你关闭光标,你只是将它标记为无效以处理进一步的请求("我完成了这个")。

因此,在函数/事务结束时,您应该继续关闭游标,向数据库提供该事务已完成的提示。

一个好的模式是使游标是短暂的:你从连接对象中获取一个,做你需要的,然后丢弃它。所以结束是有意义的,你应该继续在代码部分的末尾使用cursor.close()来使用它。

相信(无法找到任何引用)如果您只是让光标超出范围(功能结束,或只是del cursor),您应该得到同样的行为。但是为了良好的编码实践,你应该明确地关闭它。

[连接对象]

当您使用数据库实际完成时,应该关闭连接。这意味着connection.close()