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

2024-03-14

我一直在使用命令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()

而在官方文档 https://docs.python.org/2/library/sqlite3.html有时光标被关闭,有时连接被关闭,有时两者都被关闭。

我的问题是:

  1. 有什么区别吗cur.close() and conn.close()?
  2. 完成后关闭一个就足够了(或者我必须关闭两个)?如果是这样,哪一个更可取?

[关于关闭游标]

如果关闭游标,您只是将其标记为无效以处理进一步的请求(“我已完成此操作”)。

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

一个好的模式是使游标短暂存在:您从连接对象中获取一个游标,执行您需要的操作,然后丢弃它。所以关闭是有道理的,你应该继续使用cursor.close()在使用它的代码部分的末尾。

I believe(找不到任何引用)如果您只是让光标超出范围(函数结束,或者只是del cursor)你应该得到相同的行为。但为了良好的编码实践,您应该明确关闭它。

[连接对象]

当你真正完成时与数据库,你应该关闭你的联系到它。这意味着connection.close()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQLite 中关闭游标或连接有什么区别吗? 的相关文章

随机推荐