关闭光标和与Python和MySQLdb的连接
我有一个简单的基于web.py的应用程序,它使用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 *
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()