一、相关资料链接:
python链接数据库:https://www.runoob.com/python3/python3-mysql.html
python3 json解析:https://www.runoob.com/python3/python3-json.html
二、遇到的问题
思路: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)
data = cursor.fetchall()
cols = cursor.description
res = format_data(cols, data)
cursor.close()
db.close()
# json.dumps(): 对数据进行编码,转成json格式
data_json = json.dumps(res, cls=ComplexEncoder,
indent=1)
# 写入文档datajson
with open('datajson', 'w')as file:
file.write(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()