[英]Closing cursor and connection with Python and MySQLdb
我有一個簡單的基於web.py的應用程序,它使用MySQLdb。 我有一個類來處理數據庫操作,如下所示:
class db():
def __init__(self):
db = MySQLdb.connect(host='mysql.server', user='user', passwd='pass', db='app')
self.cur = db.cursor()
def get_data(self):
sql = "SELECT * FROM foobar"
self.cur.execute(sql)
rs = self.cur
r.fetchall()
return rs
我將類實例化為DB = db()
。 然后,在另一個課程中,我將參考它。
class bleh()
def blarg():
DB.get_data()
有了這樣的東西,我會在哪里關閉光標和連接? 或者我接近這個完全錯誤?
用於連接的db.close()
和用於游標的cur.close()
。
http://mysql-python.sourceforge.net/MySQLdb.html
編輯:
但如果它考慮一下 - 你將不需要關閉光標。 一旦變量被銷毀,Python就會關閉游標,所以當你的類的實例不再存在時 - 游標將被關閉。
首先為類名和變量使用不同的名稱,因為您對類名和連接使用了相同的名稱('db')。
接下來,您需要將conn(在您的問題db
第3行)定義為self.conn
。
導入MySQLdb
class db():
def __init__(self): self.conn = MySQLdb.connect(host='mysql.server', user='user', passwd='pass', db='app') self.cur = self.conn.cursor() def get_data(self): sql = "SELECT * FROM test" self.cur.execute(sql) rs = self.cur rs.fetchall() return rs
class bleh()
def blarg():
data = DB.get_data()
DB.cur.close()
DB.conn.close()
注意:如果在類bleh中有多個函數從數據庫獲取數據,請確保在函數中關閉游標和連接,這在最后調用。 或者你可能有一個單獨的功能,它關閉光標和連接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.