• 使用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()
    复制代码

     

  • 相关阅读:
    哪些手机系统必备,却鲜为人知的APP?
    Hudi数据湖技术引领大数据新风口(三)解决spark模块依赖冲突
    如何使用Chart.js 3.8.0 创建堆积条形图?
    第20章 设置应用程序的样式并对其进行部署
    Linux内核中ideapad-laptop.c文件全解析7
    Element-Ui el-table 动态添加行
    关于数据中心的设计方案,数据中心网络规划设计
    【Hadoop大数据技术】——HDFS分布式文件系统(学习笔记)
    前端工程化-基于Taro的Web端Monorepo架构改造
    leetcode 503.下一个更大元素II 单调栈
  • 原文地址:https://www.cnblogs.com/lcl-cn/p/17816246.html