【问题标题】:Is there any difference between closing a cursor or a connection in SQLite?在 SQLite 中关闭游标或连接有什么区别吗?
【发布时间】:2017-01-29 16:13:21
【问题描述】:

在我完成数据库后,我一直使用命令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. 完成后关闭一个是否足够(或者我必须同时关闭两个)?如果有,哪一个更可取?

【问题讨论】:

标签: python sqlite database-cursor


【解决方案1】:

[关闭游标]

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

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

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

相信(找不到任何参考资料)如果您只是让光标超出范围(函数结束,或者只是del cursor),您应该会得到相同的行为。但是为了良好的编码习惯,您应该明确关闭它。

[连接对象]

当您真正完成数据库后,您应该关闭与它的连接。这意味着connection.close()

【讨论】:

    猜你喜欢
    • 2012-11-24
    • 2011-09-19
    • 2012-04-10
    • 1970-01-01
    • 2010-12-31
    • 2010-09-26
    • 1970-01-01
    • 2017-04-15
    • 2019-04-09
    相关资源
    最近更新 更多