pymysql操作mysql,虽然简单,但每次都要链接数据库,获取游标,关闭游标,关闭链接。这些操作无技术含量,还要重复编写!!想一想不如封装一个DBUtil,来提高开发效率。
要编写工具类首先要把公共内容封装起来
- 获取链接,获取游标
- 关闭游标,关闭链接
- 合并DML方法
- 查询数据(单条数据和多条数据)
首先要设置连接参数
class DBUtil:
# 设置连接参数
config={
'host':'localhost',
'port':3306,
'user':'root',
'passwd':'(你的密码)',
'db':'test2',
'charset':'utf8mb4'
}
获取链接,获取游标
def __init__(self):
self.connt = pymysql.connect(**DBUtil.config)
self.cursor = self.connt.cursor()
关闭链接与游标
def close(self):
if self.cursor:
self.cursor.close()
if self.connt:
self.connt.close()
执行dml语句
def execute_sql(self,sql,*args):
'''
可以执行sql语句,用于数据的增加、删除、修改
'''
try:
# 执行SQL
self.cursor.execute(sql,args)
# 提交事务
self.connt.commit()
except Exception as e:
print(e)
if self.connt:
self.connt.rollback()
finally:
self.close()
查询数据
def query_one(self,sql,*args):
'''
查询一条数据
'''
try:
# 执行SQL
self.cursor.execute(sql,args)
# 获取结果
rs = self.cursor.fetchone()
# 返回数据
return rs
except Exception as e:
print(e)
finally:
self.close()
以下是完整代码
import pymysql
class DBUtil:
# 设置连接参数
config={
'host':'localhost',
'port':3306,
'user':'root',
'passwd':'rootroot',
'db':'test2',
'charset':'utf8mb4'
}
def __init__(self):
'''
获取链接
获取游标
'''
self.connt = pymysql.connect(**DBUtil.config)
self.cursor = self.connt.cursor()
def close(self):
'''
关闭链接与游标
'''
if self.cursor:
self.cursor.close()
if self.connt:
self.connt.close()
def execute_sql(self,sql,*args):
'''
可以执行sql语句,用于数据的增加、删除、修改
'''
try:
# 执行SQL
self.cursor.execute(sql,args)
# 提交事务
self.connt.commit()
except Exception as e:
print(e)
if self.connt:
self.connt.rollback()
finally:
self.close()
def query_one(self,sql,*args):
'''
查询一条数据
'''
try:
# 执行SQL
self.cursor.execute(sql,args)
# 获取结果
rs = self.cursor.fetchone()
# 返回数据
return rs
except Exception as e:
print(e)
finally:
self.close()
def query_all(self,sql,*args):
'''
查询所有数据
'''
try:
# 执行SQL
self.cursor.execute(sql,args)
# 获取结果,并返回数据
return self.cursor.fetchall()
except Exception as e:
print(e)
finally:
self.close()
if __name__ =='__main__':
db = DBUtil()
# sql = 'insert into user(name,age) values("张三",18)'
# execu = db.execute_sql(sql)
sql = 'select * from user where age = 18'
# print(db.query_one(sql))
print(db.query_all(sql))
这样一个简单的DBUtil就封装完成了,这个比较适合新手,大佬勿喷