君语贤
时光静好,与君语;细水流年,与君同;繁华落尽,与君老...

建站开发>Python>正文

Python将查询到的MYSQL的数据导出成excle格式

2024-02-23 17:53 君语贤exclePython

Python将查询到的MYSQL的数据导出成excle格式

写一个Python文件实现将查询到的MYSQL的数据导出成excle格式,导出规则:
1、以单个文件最大60万条数据数据,超过60万部分再次生成新的文件,知道数据导出完成
2、每个导出文件包含表头字段信息

以下是 Python 代码实现要求的功能:

首先,需要安装OpenPyXL和pymysql两个库。

可以使用以下命令进行安装:

pip install openpyxl
pip install pymysql

然后,可以按照以下代码实现数据导出。

import pymysql
from openpyxl import Workbook

# 连接数据库
conn = pymysql.connect(host='localhost', user='root', password='123456', database='database_name')

# 设置导出文件的最大行数
max_row = 600000

# 查询数据
cursor = conn.cursor()
cursor.execute('select * from table_name')
results = cursor.fetchall()

# 获取查询结果的字段名
fields = cursor.description
field_names = [i[0] for i in fields]

# 计算查询结果的总行数
num_row = len(results)

# 计算需要生成的文件数量
num_file = num_row // max_row + 1 if num_row % max_row != 0 else num_row // max_row

# 分批导出数据
for i in range(num_file):
    # 创建工作簿
    wb = Workbook()

    # 新建工作表
    ws = wb.active

    # 设置表头
    for j in range(len(field_names)):
        ws.cell(row=1, column=j+1).value = field_names[j]

    # 设置数据
    start_row = i * max_row
    end_row = (i+1) * max_row if (i+1) * max_row < num_row else num_row

    for row in range(start_row, end_row):
        for column in range(len(fields)):
            ws.cell(row=row-start_row+2, column=column+1).value = results[row][column]

    # 保存文件
    wb.save('file_{}.xlsx'.format(i))

# 关闭游标和数据库连接
cursor.close()
conn.close()

需根据实际的数据库表名和数据库名进行修改。