关闭光标和与Python和MySQLdb的连接

关闭光标和与Python和MySQLdb的连接,python,python-2.7,mysql-python,Python,Python 2.7,Mysql Python,我有一个简单的基于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 *

我有一个简单的基于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()用于游标

编辑:


但是,如果它给它一点思考-您将不需要关闭光标。一旦变量被销毁,Python将关闭游标,因此当类的实例不再存在时,游标将被关闭。

首先,对类名和变量使用不同的名称,就像对类名和连接使用相同的名称('db')

接下来,您需要将conn(在您的问题
db
第3行中)定义为
self.conn

导入MySQLdb

类db():


注意:若在bleh类中有多个函数从数据库中获取数据,请确保在函数中关闭游标和连接,该函数将在最后调用。或者您可能有一个单独的函数,它关闭游标和连接。

但是我应该把它放在类中的什么位置?@RHPT:什么时候您不再需要数据库连接或游标?@RHPT:扩展了一点答案。我为问题添加了更多解释。当然,它会更好地清理它。@RHPT:Destroy 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()