mysql 数据转excel文件

mysql 数据转excel文件

缘由

为售后拉取数据,用navicat太墨迹了,用python写一个main方法跑一下;

1.抽取共同方法,封装成传入mysql,直接下载成excel;

2.写入所有sql语句,传入参数;

代码

python 复制代码
'''
@Author: Jeff.zheng
@Date : 2024/4/27
@Desc : mysql 转成excel文件
'''

import json
import os
import time
from datetime import datetime
import pandas as pd
import pymysql.cursors
from future.backports.datetime import timedelta


# 获取游标
def getCursor():
    # 创建连接
    Connection = pymysql.connect(
        host='127.0.0.1',  # 数据库主机地址
        user='root',  # 数据库用户名
        password='123456',  # 数据库密码
        db='cloud3',  # 数据库名
        cursorclass=pymysql.cursors.DictCursor  # 使用DictCursor以字典形式返回查询结果
    )

    cursorOfConnection = Connection.cursor()
    return cursorOfConnection


# 获取结果
def getResultBySql(cursorOfConnection, sql):
    try:
        cursorOfConnection.execute(sql)
        # 获取查询结果
        Result = cursorOfConnection.fetchall()
        return Result
    except Exception as e:
        print(e)
        cursorOfConnection.close()


def exportExcelByList(listData, dateName, fileName):
    df = pd.DataFrame(listData)
    # 设置表头
    need_path = os.path.join(os.path.expanduser("~"), "Desktop") + '/测试文件夹-' + dateName
    os.makedirs(need_path, exist_ok=True)
    fileNamePath = os.path.join(need_path, fileName + '.xlsx')
    df.to_excel(fileNamePath, index=None)
    # 这里可以格式化或者别的,太麻烦暂不处理;


def sqlToExcel(myCursor, sql, dateName, xlsxName):
    print(xlsxName + "-开始-" + datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
    sqlResultList = getResultBySql(myCursor, sql)
    exportExcelByList(sqlResultList, dateName, xlsxName)
    print(xlsxName + "-结束-" + datetime.now().strftime('%Y-%m-%d %H:%M:%S') + "\n")


if __name__ == '__main__':
    cursor = getCursor()
    date = "2024-04-28"
    dateAddOne = (datetime.strptime(date, '%Y-%m-%d') + timedelta(days=1)).strftime('%Y-%m-%d')

    sql0 = "SELECT col_device_id  as '所有出货的设备ID'  FROM cj_all_bed "
    sqlToExcel(cursor, sql0, date, "0-所有出货的设备ID")

多表最后效果图


相关推荐
Database_Cool_28 分钟前
云原生多租户隔离 + 近实时分析怎么选型?阿里云 AnalyticDB MySQL 资源隔离方案
数据库·mysql·阿里云
小马爱打代码7 小时前
Redis 集群方案详解:主从复制、哨兵、脑裂、分片集群和哈希槽
数据库·redis·哈希算法
海南java第二人8 小时前
ClickHouse 稀疏索引深度解析:为什么 OLAP 数据库不用 B-Tree?
数据库·clickhouse
Litluecat8 小时前
信创迁移:Oracle切换海量数据库,慢sql扫描
数据库·sql·oracle·信创·海量
消失在人海中9 小时前
Oracle的CURRENT REDO丢失,数据丢失风险分析
数据库·oracle
喵了几个咪9 小时前
选择第三方IAM还是自建权限体系?中小型后台系统权限架构决策指南
数据库·oracle·架构
Elastic 中国社区官方博客10 小时前
Kibana:使用 AI Chat 及 MCP 轻松创建 AI 原生仪表板
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·信息可视化
杨云龙UP11 小时前
Oracle Health Check巡检脚本使用SOP V2.0:从HTML原始报告→生成Word专业巡检报告→交付客户_2026-06-03
linux·运维·数据库·sql·oracle·报告·巡检
Database_Cool_11 小时前
Hudi 湖仓一体架构:阿里云 AnalyticDB MySQL 原生集成最佳实践
数据库·mysql·阿里云