使用Python将MySQL查询结果导出到Excel(xlsxwriter)

在实际工作中,我们经常需要将数据库中的数据导出到Excel表格中进行进一步的分析和处理。Python中的pymysql和xlsxwriter库提供了很好的解决方案,使得这一过程变得简单而高效。

建立数据库连接

首先,我们需要使用pymysql库来建立与MySQL数据库的连接,并指定要连接的数据库名称、用户名和密码。

复制代码
import pymysql

connection = pymysql.connect(
    host='localhost',
    user='root',
    password='123456',
    database='caiwu'
)

编写SQL查询语句

接下来,我们可以编写需要执行的SQL查询语句,以获取所需的数据。

复制代码
query = "SELECT * FROM report_品名"

创建Excel文件对象和工作表对象

使用xlsxwriter库,我们可以创建一个新的Excel文件和工作表对象,准备将数据写入其中。

复制代码
import xlsxwriter

workbook = xlsxwriter.Workbook('output.xlsx')
worksheet = workbook.add_worksheet()

创建游标对象并执行SQL查询

创建游标对象,执行SQL查询语句,并获取查询结果的列名。

复制代码
cursor = connection.cursor()
cursor.execute(query)

column_names = [i[0] for i in cursor.description]

将查询结果写入Excel文件

遍历查询结果,并将数据写入到Excel文件中。在此过程中,我们还可以对时间字段进行格式化处理。

复制代码
import datetime

data = cursor.fetchall()

for col_index, col_name in enumerate(column_names):
    worksheet.write(0, col_index, col_name)

for row_index, row_data in enumerate(data):
    for col_index, col_data in enumerate(row_data):
        if isinstance(col_data, datetime.datetime):
            col_data = col_data.strftime("%Y-%m-%d %H:%M:%S")
        worksheet.write(row_index + 1, col_index, col_data)

关闭游标、数据库连接和Excel文件对象

在数据导出完成后,记得关闭游标、数据库连接和Excel文件对象,释放资源。

复制代码
cursor.close()
connection.close()
workbook.close()

总结

通过以上步骤,我们使用Python成功地将MySQL查询结果导出到Excel文件中。这种方法不仅简单方便,而且还可以轻松实现定制化的数据处理和格式化操作。

完整代码:

复制代码
import pymysql
import xlsxwriter
import datetime

# 建立数据库连接
connection = pymysql.connect(
    host='localhost',
    user='root',
    password='123456',
    database='caiwu'
)

# 编写SQL查询语句
query = "SELECT * FROM report_品名"

# 创建Excel文件对象
workbook = xlsxwriter.Workbook('output2.xlsx')

# 创建Excel工作表对象
worksheet = workbook.add_worksheet()

# 创建游标对象
cursor = connection.cursor()

# 执行SQL查询
cursor.execute(query)

# 获取查询结果的列名
column_names = [i[0] for i in cursor.description]

# 将列名写入Excel文件的第一行
for col_index, col_name in enumerate(column_names):
    worksheet.write(0, col_index, col_name)

# 获取查询结果中的数据
data = cursor.fetchall()

# 将数据写入Excel文件中
for row_index, row_data in enumerate(data):
    for col_index, col_data in enumerate(row_data):
        # 判断数据类型是否为时间类型
        if isinstance(col_data, datetime.datetime):
            col_data = col_data.strftime("%Y-%m-%d %H:%M:%S")  # 将时间字段转换为字符串
        worksheet.write(row_index + 1, col_index, col_data)

# 关闭游标对象
cursor.close()

# 关闭数据库连接
connection.close()

# 关闭Excel文件对象
workbook.close()
相关推荐
Wise玩转AI4 小时前
Day 27|智能体的 UI 与用户交互层
人工智能·python·ui·ai·chatgpt·ai智能体
Coder-coco4 小时前
个人健康管理|基于springboot+vue+个人健康管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·mysql·论文
s***46984 小时前
【玩转全栈】----Django模板语法、请求与响应
数据库·python·django
g***72705 小时前
【mysql】导出导入mysql表结构或者数据
数据库·mysql
runepic5 小时前
Python + PostgreSQL 批量图片分发脚本:分类、去重、断点续拷贝
服务器·数据库·python·postgresql
codists5 小时前
2025年11月文章一览
python
生而为虫5 小时前
31.Python语言进阶
python·scrapy·django·flask·fastapi·pygame·tornado
言之。5 小时前
Claude Code 实用开发手册
python
计算机毕设小月哥6 小时前
【Hadoop+Spark+python毕设】中国租房信息可视化分析系统、计算机毕业设计、包括数据爬取、Spark、数据分析、数据可视化、Hadoop
后端·python·mysql
2***c4356 小时前
Redis——使用 python 操作 redis 之从 hmse 迁移到 hset
数据库·redis·python