2016-09-21 122 views
3

我一直在使用总是命令cur.close()一次我与数据库进行:在SQLite中关闭游标或连接有什么区别吗?

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

请参阅http://stackoverflow.com/questions/5504340/python-mysqldb-connection-close-vs-cursor-close – Harsha

+0

谢谢!我在研究期间没有找到这篇文章。 – J0ANMM

+0

欢迎... – Harsha

回答

1

[开关闭游标]

如果您关闭游标,你只是标记为无效处理其他请求(“我这个做”)。

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

一个好的模式是让游标寿命很短:你从连接对象中获得一个,做你所需要的,然后丢弃它。所以关闭是有意义的,你应该继续在你的代码段的末尾使用cursor.close()来使用它。

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

[连接对象]

当你真正使用数据库做,应关闭连接它。这意味着connection.close()