2016-09-21 55 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()

相關問題