簡體   English   中英

關閉游標並與Python和MySQLdb連接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM