使用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()
相关推荐
程序员岳焱37 分钟前
Java 与 MySQL 性能优化:Java 实现百万数据分批次插入的最佳实践
后端·mysql·性能优化
小赖同学啊2 小时前
物联网数据安全区块链服务
开发语言·python·区块链
码荼2 小时前
学习开发之hashmap
java·python·学习·哈希算法·个人开发·小白学开发·不花钱不花时间crud
梦在深巷、2 小时前
MySQL/MariaDB数据库主从复制之基于二进制日志的方式
linux·数据库·mysql·mariadb
Johny_Zhao3 小时前
Ubuntu系统安装部署Pandawiki智能知识库
linux·mysql·网络安全·信息安全·云计算·shell·yum源·系统运维·itsm·pandawiki
小陈phd3 小时前
李宏毅机器学习笔记——梯度下降法
人工智能·python·机器学习
kk爱闹3 小时前
【挑战14天学完python和pytorch】- day01
android·pytorch·python
Blossom.1183 小时前
机器学习在智能建筑中的应用:能源管理与环境优化
人工智能·python·深度学习·神经网络·机器学习·机器人·sklearn
祁思妙想3 小时前
八股学习(三)---MySQL
数据库·学习·mysql
亚力山大抵3 小时前
实验六-使用PyMySQL数据存储的Flask登录系统-实验七-集成Flask-SocketIO的实时通信系统
后端·python·flask