Python中第三方库封装mysql数据库的示例分析
本篇文章为大家展示了Python中第三方库封装mysql数据库的示例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
这次封装数据库,就算不是为了自动化测试,数据库操作也必须要会,为什么?因为在很多时候,修复现网用户数据都是通过脚本实现的,如果不用其他语言,那么python在这一块的优势就十分明显了。
'''
Created on 2019年10月10日
@author: qguan
'''
import pymysql
from utils.HandleLogging import log as logging
mysql_info = {"host": '127.0.0.1',
"port": 3306,
"user": 'root',
"passwd": 'root',
"db": 'mysql',
"charset": 'utf8'}
class HandleMySQL(object):
'''
classdocs
'''
def __init__(self):
'''
初始化mysql数据库信息,创建连接游标
'''
self.db_info = mysql_info
self.logger = logging
try:
self.conn = pymysql.connect(host=self.db_info['host'],
port=self.db_info['port'],
user=self.db_info['user'],
passwd=self.db_info['passwd'],
db=self.db_info['db'],
charset=self.db_info['charset'],
cursorclass=pymysql.cursors.DictCursor)
self.logger.info("success!")
except Exception as a:
self.logger.info("failture:%s" % a)
raise a
else:
self.logger.info("create cursor!")
self.cursor = self.conn.cursor()
def __call__(self, sql, arg=None, is_more=False):
'''
调用数据库执行方法
:param sql:执行的sql语句,str类型
:param arg:参数必须是序列类型:list、str、tuple
:param is_more:是否查询显示更多数据,通常根据sql的limit来确定
:return:
'''
self.mysql_execute(sql, arg)
if is_more:
result = self.cursor.fetchall()
else:
result = self.cursor.fetchone()
# 不合适,如果还有sql在循环执行,在这里关闭,会造成sql执行失败
# self.mysql_close()
return result
def mysql_execute(self, sql, arg=None):
'''郑州人流医院哪家好 http://mobile.zhongyuan120.com/
封装自己执行sql语句的方法
'''
try:
self.cursor.execute(sql)
except Exception as a:
self.conn.rollback() # sql回滚处理
self.logger.info("回滚sql,异常如下:{}".format(a))
raise a
else:
self.conn.commit() # sql提交
def mysql_getrows(self, sql):
'''
返回查询结果集
:return: 返回的是一个嵌套字典的元组
'''
try:
self.cursor.execute(sql) # arg必须是序列类型
except Exception as a:
self.logger.info("执行SQL语句出现异常:%s" % a)
raise a # 直接抛出异常,不在执行后面的语句
else:
rows = self.cursor.fetchall()
return rows
def mysql_getrow(self, sql):
'''
返回查询结果集
return:结果是个字典
'''
try:
self.cursor.execute(sql) # arg必须是序列类型
except Exception as a:
self.logger.info("执行SQL语句出现异常:%s" % a)
raise a
else:
row = self.cursor.fetchone()
return row
def mysql_close(self):
'''
关闭数据库连接,关闭游标
'''
try:
self.conn.close()
self.cursor.close()
self.logger.info("正常关闭mysql连接!")
except Exception as a:
self.logger.info("关闭mysql连接池失败,异常如下:{}".format(a))
raise a
if __name__ == '__main__':
mq = HandleMySQL()
sql = 'SELECT *from user limit 3'
# print(mq(sql, is_more=True))
mq.mysql_close()
上述内容就是Python中第三方库封装mysql数据库的示例分析,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。