【python】获取数据库信息并保存为Json格式

一、相关资料链接:

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()

你可能感兴趣的:(【python】获取数据库信息并保存为Json格式)