一、相关资料链接:
二、遇到的问题
思路:pymysql读取数据库信息;json.dumps(): 对数据进行编码,转成json格式
三、源码
import pymysql, json
from datetime import date, datetime
# 打开数据库连接
param = {
'host': '',
'port': ,
'db': '',
'user': '',
'password': '',
}
db = pymysql.connect(**param)
# 使用cursor()方法创建一个游标对象cursor
cursor = db.cursor()
# 重新构造json类,遇到日期特殊处理,其余的用内置
class ComplexEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(obj, date):
return obj.strftime('%Y-%m-%d')
else:
return json.JSONEncoder.default(self, obj)
def get_result():
# 需要执行的sql语句
sql = "sql"
cursor.execute(sql) # 使用execute()方法执行sql语句
data = cursor.fetchall() # fetchall()使用接收全部的返回结果行(fetchone()方法获取单条数据,
cols = cursor.description # 类似desc table_ame返回结果
res = format_data(cols, data)
cursor.close()
db.close() # 关闭数据库
# json.dumps(): 对数据进行编码,转成json格式
data_json = json.dumps(res, cls=ComplexEncoder,
indent=1) # indent默认无=不换行,0=换行;其余indent的值,代表缩进空格式;cls默认 = JSONEncoder
# 写入文档datajson
with open('datajson', 'w')as file:
file.write(data_json)
# print(data_json)
# 数据格式化 cols字段名,data结果集
def format_data(cols, data):
# 字段数组 形式['id', 'name', 'password']
col = [] # 创建一个空列表以存放列名
for i in cols:
col.append(i[0])
# 返回的数组集合 形式[{'id': 1, 'name': 'admin', 'password': '123456'}]
res = []
for iter in data:
line_data = {}
for index in range(0, len(col)):
line_data[col[index]] = iter[index]
res.append(line_data)
return res
get_result()