import pymysql
'''
简化mysql 的数据库的操作封装成类调用
主要一个类的实例为一个数据库的连接,
处理这个流程
优化封装成静态方法调用避免多次连接数据库造成连接资源浪费
'''
class mysqlDB(object):
def __init__(self, host, user, passwd, db, port=3306, charset='utf8'):
self.host = host
self.port = port
self.db = db
self.user = user
self.passwd = passwd
self.charset = charset
self.connection()
# 创建一个连接
def connection(self):
try:
self.conn = pymysql.connect(host=self.host, port=self.port, user=self.user, passwd=self.passwd, db=self.db,
charset=self.charset)
self.cur = self.conn.cursor()
except pymysql.Error as e:
self.Error = str(e.args[0]) + str(e.args[1])
raise
# 关闭连接
def closeconn(self):
self.cur.close()
self.conn.close()
# 查询一条数据
def getOneData(self, sql):
try:
self.cur.execute(sql)
return self.cur.fetchone()
except pymysql.Error as e:
self.Error = str(e.args[0]) + str(e.args[1])
raise
# 查询多条数据
def getAllData(self, sql):
try:
self.cur.execute(sql)
return self.cur.fetchall()
except pymysql.Error as e:
self.Error = str(e.args[0]) + str(e.args[1])
raise
# 添加/删除/修改
def crud(self, sql):
try:
n = self.cur.execute(sql)
self.conn.commit()
return n
except pymysql.Error as e:
self.conn.rollback()
self.Error = str(e.args[0]) + str(e.args[1])
raise
# 批量插入
def execMany(self, sql, vals):
try:
n = self.cur.executemany(sql, vals)
print(n)
self.conn.commit()
except pymysql.Error as e:
self.conn.rollback()
self.Error = str(e.args[0]) + str(e.args[1])
raise
class mysqlTB(object):
def __init__(self, db):
self.db = db
def getAllData(self, sql):
self.db.connection()
data = self.db.getAllData(sql)
self.db.closeconn()
return data
def crud(self,sql):
self.db.connection()
try:
self.db.crud(sql)
except Exception as e:
print('插入数据报错!', str(e))
finally:
self.db.closeconn()
if __name__ == '__main__':
# ['211', '李四'],
# ['311', '王五']
# insert_data = [[311, '王五']]
try:
mydb = MysqlDB('180.103.66.133', 'root', 'Dg#D21bT$s', 'daguan_fileconvert')
# sql = "select * from test "
# res = mydb.getAllData(sql)
# print(res)
# for item in res:
# print("name:%s,age:%s" % (item[0], item[1]))
# print('------------第二次哟------------')
# mydb.crud("insert into test(id,address) value ('%d','%s')" % (12,'LOKing'))
insert_data = [
[98, '张三1'],
[100, '李四1'],
[27, '王五1']
]
sql = "INSERT INTO test(age,address) VALUES (%s,%s)"
# print('insert_data:',insert_data)
mydb.execMany(sql, insert_data)
# sql = 'INSERT INTO test(age, address) VALUES (%d, %s)'
# mydb.execMany(sql, insert_dat
# # for item in res:a)
# print("name:%s,age:%s" % (item[0], item[1]))
except Exception:
print("出错啦:" + mydb.Error)
finally:
mydb.closeconn()
pymysql类
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 前情回顾 上一篇文章已经写好了查询数据库以及post请求API的实例,那么本章节我们来继续。 实战任务 本次因为服...
- 公司以前用的 django 的 orm ,后来为了解耦,想着改用mysql存数据,好久没用过了。踩到的坑,大家可以...
- conn = pymysql.connect(use_unicode=True, charset='utf8', ...