使用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()
相关推荐
安迁岚1 分钟前
【SQL Server】华中农业大学空间数据库实验报告 实验三 数据操作
运维·服务器·数据库·sql·mysql
安迁岚3 分钟前
【SQL Server】华中农业大学空间数据库实验报告 实验九 触发器
数据库·sql·mysql·oracle·实验报告
Dxy12393102163 分钟前
python bmp图片转jpg
python
麦麦大数据4 分钟前
Python棉花病虫害图谱系统CNN识别+AI问答知识neo4j vue+flask深度学习神经网络可视化
人工智能·python·深度学习
LKID体7 分钟前
Python操作neo4j库py2neo使用之创建和查询(二)
数据库·python·neo4j
LKID体11 分钟前
Python操作neo4j库py2neo使用之py2neo 删除及事务相关操作(三)
开发语言·python·neo4j
小屁孩大帅-杨一凡13 分钟前
Python-flet实现个人视频播放器
开发语言·python·音视频
算家云15 分钟前
快速识别模型:simple_ocr,部署教程
开发语言·人工智能·python·ocr·数字识别·检测模型·英文符号识别
Thomas_Cai26 分钟前
Python后端flask框架接收zip压缩包方法
开发语言·python·flask
无敌岩雀40 分钟前
MySQL中的索引
数据库·mysql