背景
python执行mysql语句的话牵扯到的操作还挺多,简单说每次执行一条语句需要进行数据库连接、获取游标、执行语句、获取返回数据、断开连接,如果其中出错还需要回滚游标等操作,每次都写这么一大串代码会看起来十分冗余,于是考虑写一个类来封装上述操作。
基本的mysql操作
import MySQLdb
# 打开数据库连接
db = MySQLdb.connect("localhost", "user", "password", "dbname")
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# 使用execute方法执行SQL语句
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取一条数据
data = cursor.fetchone()
print "Database version : %s " % data
# 关闭数据库连接
db.close()
目标
实现一个可以简单操作mysql的类
解决方案
环境
macOS 10.14
python3.6.5
PyMySQL==0.9.3
这里插一句题外话,有的环境安装MySQLdb这个package的时候会报错,解决起来很复杂,一个简单的方案是安装pymysql,然后import的时候按如下操作即可实现与MySQLdb一样的效果。
import pymysql
pymysql.install_as_MySQLdb()
import MySQLdb
实现
# mysql_util.py
import pymysql
pymysql.install_as_MySQLdb()
import MySQLdb
class MysqlUtil(object):
@classmethod
def init(cls, _cfg):
'''
_cfg是一个词典,里面保存了mysql的设置
{'db_name' : "my_db_name",
'host' : 'localhost',
'port' : 'my_port_to_db',
'user' : 'username',
'password' : 'happy_password'}
'''
cls.mysql_cfg = _cfg
print('init MysqlUtil success, cfg: %s',
list(cls.mysql_cfg.items()))
@classmethod
def _get_mysql_cursor(cls, database)