下面是使用Python实现将多表分批次从数据库导出到Excel的完整实例教程,包含两条示例说明。
准备工作
在实现之前,需要安装以下几个工具:
- Python环境
- MySQL数据库
- Python第三方库:mysql-connector-python, openpyxl
导出单个表
首先,我们来看一个导出单个表的示例。假设我们要从MySQL数据库中将表students导出到Excel文件中,可以按照以下步骤进行:
- 连接数据库
import mysql.connector
# 创建连接
config = {
"host": "localhost",
"user": "root",
"password": "yourpassword",
"database": "yourdatabase"
}
conn = mysql.connector.connect(**config)
# 创建游标
cursor = conn.cursor()
- 从数据库查询数据
# 查询数据
query = "SELECT * FROM students"
cursor.execute(query)
# 读取数据
rows = cursor.fetchall()
- 将查询结果写入Excel文件
import openpyxl
# 创建Excel文件
wb = openpyxl.Workbook()
sheet = wb.active
# 写入表头
columns = [column[0] for column in cursor.description]
sheet.append(columns)
# 写入数据
for row in rows:
sheet.append(row)
# 保存Excel文件
wb.save("students.xlsx")
导出多个表
接下来,我们来看一个导出多个表的示例。假设我们要从MySQL数据库中导出多个表(每个表存储的数据量都很大,不能一次性导出全部数据),可以按照以下步骤进行:
- 获取所有表名
# 获取所有表名
query = "SHOW TABLES;"
cursor.execute(query)
tables = []
for table in cursor:
tables.append(table[0])
- 分批次从数据库查询数据并写入Excel文件
import math
# 每批次导出的数据数量
batch_size = 1000
# 遍历所有表
for table in tables:
# 查询数据总量
query = "SELECT COUNT(*) FROM {0};".format(table)
cursor.execute(query)
total = cursor.fetchone()[0]
# 分批次导出数据
for i in range(0, math.ceil(total / batch_size)):
query = "SELECT * FROM {0} LIMIT {1}, {2};".format(table, i * batch_size, batch_size)
cursor.execute(query)
rows = cursor.fetchall()
# 创建Excel文件
wb = openpyxl.Workbook()
sheet = wb.active
# 写入表头
columns = [column[0] for column in cursor.description]
sheet.append(columns)
# 写入数据
for row in rows:
sheet.append(row)
# 保存Excel文件
wb.save("{0}_{1}.xlsx".format(table, i + 1))
以上就是使用Python实现将多表分批次从数据库导出到Excel的完整实例教程,其中包含单个表和多个表的示例。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Python实现将多表分批次从数据库导出到Excel - Python技术站