import pymysql
from Com.myconf import conf
class MySql:
def __init__(self):
# (1)连接mysql数据库
self.con = pymysql.Connect(
host= conf.get('mysql', 'host'), # 连接ip
port=conf.getint('mysql', 'port'), # 端口号
user=conf.get('mysql', 'user'), # 数据库用户名
passwd=conf.get('mysql', 'passwd'), # 数据库密码
db=conf.get('mysql', 'db'), # 数据库名
charset='utf8' # 设置了数据库的字符集
)
# (2)创建游标对象:用于执行SQL语句
self.cursor = self.con.cursor()
# (3)执行SQL语句
def readone(self, sql): # 显示查找的第一条数据
self.con.commit() # 提交执行(执行完增删改数据后,需要提交)
self.cursor.execute(sql)
return self.cursor.fetchone()
def readall(self, sql): # 显示查找的所有内容(元组形式)
self.con.commit()
self.cursor.execute(sql)
return self.cursor.fetchall()
def count(self, sql):
self.con.commit()
return self.cursor.execute(sql)
def close(self):
self.cursor.close() # 关闭游标对象
self.con.close() # 断开连接
# 将查询的结果作为value,查询的字段作为键,转为dict格式
def dictData(self,sql):
self.readall(sql)
col = []
resultSets = []
for i in self.cursor.description:
col.append(i[0])
for data in self.readall(sql):
list2 = list(data)
resultSets.append(dict(map(lambda x,y:[x,y],col,list2)))
return resultSets
# 注意:不能在数据库中直接创建对象,在不同测试类中直接调用【因为测试完成后,需要关闭测试库,影响连接状态】
# 需对类数据进行操作的,在调用类中创建对象,不可在被调用的类中创建对象
# mysql = MySql()
if __name__ == '__main__':
pass