我一直試圖找到這個問題的答案整晚,我仍然沒有遇到明確的答案。在Python中關閉SQLite3連接(當連接是對象的一部分時)
import sqlite3
db = sqlite3.connect('whatever.db')
cursor = db.cursor()
#do some stuff
cursor.close()
現在,我想我的發展OOP的理解和數據庫,所以我想我會創建一個控制器對象來與數據庫進行交互:通常當我用sqlite3的工作,我會用以下模式。我想出了以下情況:
一類只是定義了連接和光標:
import sqlite3
class coffee_shop_controller:
def __init__(self):
self.db = sqlite3.connect("coffeeshop.db")
self.cursor = self.db.cursor()
def close(self):
self.cursor.close()
我這個子類爲我所需要的各種控制器。例如:
class customer_controller(coffee_shop_controller):
"""creates a controller to add/delete/amend customer records in the
coffee shop database"""
def __init__(self):
super().__init__()
def add_customer(self,fn,ln,sa,t,pc,tn):
sql = """insert into customer
(first_name,last_name,street_address,town,post_code,telephone_number)
values
('{0}','{1}','{2}','{3}','{4}','{5}')""".format(fn,ln,sa,t,pc,tn)
self.cursor.execute(sql)
self.db.commit()
我意識到,設計模式可能不會很大(廣納建議),而且我真的應該防止SQL注入,但關閉的連接的時刻有趣我。
從Python docs註釋行圍繞搜索表明,我們可以關閉連接,不是我們必須。這是正確的嗎?我真的不需要打擾嗎?
如果我確實需要費心則似乎是我應該做的分裂:
有什麼這裏明確嗎? __del__
方法對我最有意義,但也許這就是我的無知說話。
感謝您提供任何建議。
亞當。
感謝,結合組的工作。 –