【发布时间】:2016-06-06 02:06:49
【问题描述】:
我正在尝试创建一个包含所有数据库操作的类。我想在调用此类时启动 MySQL 连接,执行它需要执行的任何数据库操作并在完成后关闭它。
这是我目前所拥有的:
import MySQLdb
class Database_Test(object):
def __init__(self, db_local):
self.db_conn = MySQLdb.connect(**db_local)
self.db_cursor = self.db_conn.cursor()
def get_row(self, sql, data = None):
self.db_cursor.execute(sql)
self.resultset = self.db_cursor.fetchall()
self.db_cursor.close()
return self.resultset
# Close db connection something like this?
# db_conn.close()
db_config = {
'host':"127.0.0.1", # database host
'port': 3306, # port
'user':"root", # username
'passwd':"admin", # password
'db':"test", # database
'charset':'utf8' # charset encoding
}
sql = "SELECT * FROM mytest LIMIT 10"
test = Database_Test(db_config)
test.get_row(sql)
print(test)
这是我得到的:
<__main__.Database_Test object at 0x00774BF0>
这不是我期望得到的,因为我期望从数据库中获取一些记录。
【问题讨论】:
-
不要忘记建立连接比使用现有连接要昂贵得多。大多数数据库系统鼓励使用活动连接池,您可以从池中获取连接,使用它,并在完成后将其释放回池中。