在我完成数据库后,我一直在使用命令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中,有时光标会关闭,有时会连接,有时也会关闭。
我的问题是:
cur.close()
和conn.close()
之间有什么区别吗?答案 0 :(得分:1)
[关闭游标]
如果你关闭光标,你只是将它标记为无效以处理进一步的请求("我完成了这个")。
因此,在函数/事务结束时,您应该继续关闭游标,向数据库提供该事务已完成的提示。
一个好的模式是使游标是短暂的:你从连接对象中获取一个,做你需要的,然后丢弃它。所以结束是有意义的,你应该继续在代码部分的末尾使用cursor.close()
来使用它。
我相信(无法找到任何引用)如果您只是让光标超出范围(功能结束,或只是del cursor
),您应该得到同样的行为。但是为了良好的编码实践,你应该明确地关闭它。
[连接对象]
当您使用数据库实际完成时,应该关闭连接。这意味着connection.close()