import pymysql
class DataBaseHandle(object):
''' 定义一个 MySQL 操作类'''
def __init__(self, host, port, user, password, database):
'''初始化数据库信息并创建数据库连接'''
# 下面的赋值其实可以省略,connect 时 直接使用形参即可
self.connnect = pymysql.connect(
host=host,
user=user,
password=password,
db=database,
port=port,
charset="utf8"
)
self.cursor = self.connnect.cursor(pymysql.cursors.DictCursor)
# 插入操作
def insertDB(self, sql):
''' 插入数据库操作 '''
try:
# 执行sql
self.cursor.execute(sql)
# tt = self.cursor.execute(sql) # 返回 插入数据 条数 可以根据 返回值 判定处理结果
# print(tt)
self.connnect.commit()
# query = 'insert into 表名(列名1, 列名2, 列名3, 列名4, 列名5, 列名6) values(%s, %s, %s, %s, %s, %s)'
# self.cursor.execute(sql)
except:
# 发生错误时回滚
self.connnect.rollback()
finally:
self.cursor.close()
# 删除操作
def deleteDB(self, sql):
''' 操作数据库数据删除 '''
try:
# 执行sql
self.cursor.execute(sql)
# tt = self.cursor.execute(sql) # 返回 删除数据 条数 可以根据 返回值 判定处理结果
# print(tt)
self.connnect.commit()
except:
# 发生错误时回滚
self.connnect.rollback()
finally:
self.cursor.close()
# 修改操作
def updateDb(self, sql):
''' 更新数据库操作 '''
try:
# 执行sql
self.cursor.execute(sql)
# tt = self.cursor.execute(sql) # 返回 更新数据 条数 可以根据 返回值 判定处理结果
# print(tt)
self.connnect.commit()
except:
# 发生错误时回滚
self.connnect.rollback()
finally:
self.cursor.close()
# 查询操作
def selectDb(self, sql):
''' 数据库查询 '''
try:
self.cursor.execute(sql) # 返回 查询数据 条数 可以根据 返回值 判定处理结果
data = self.cursor.fetchall() # 返回所有记录列表
# print(data)
return data
# 结果遍历
# for row in data:
# name = row["name"]
# # 遍历打印结果
# print('name = %s' % name)
except:
print('Error: unable to fecth data')
finally:
self.cursor.close()
def no_select_info(self, sql):
try:
result = self.cursor.execute(sql)
self.connnect.commit()
return result
except Exception as e:
self.connnect.rollback()
raise e
finally:
self.cursor.close()
# 关闭数据库连接
def closeDb(self):
''' 数据库连接关闭 '''
self.connnect.close()
if __name__ == '__main__':
DbHandle = DataBaseHandle('localhost', 3306, 'root', '123456', 'ku0603')
# DbHandle.insertDB("insert into banji (id,name) values (6,'晓茹的篮球')")
# DbHandle.deleteDB("delete from banji where name='大数据'")
# DbHandle.selectDb("select * from banji where id > 2")
sql = 'select * from arms'
result = DbHandle.selectDb(sql)
for i in result:
for k, v in i.items():
print('key:%s value:%s' % (k, v))
print(result)
# 关闭数据库连接
DbHandle.closeDb()