python-读取mysql数据写入EXCEL(三)
2021-12-31 本文已影响0人
堂哥000
需求
- 读取mysql数据,使用SQL过滤数据
- SQL结果追加数据到EXCEL 文件
# -*- coding: utf-8 -*-
"""
Created on 2021/12/29 16:44
@author: tange
"""
from sqlalchemy import create_engine
import pandas as pd
import time
curr_date = time.strftime("%Y%m%d", time.localtime())
print(curr_date)
res_path = "D:/code_fileAll/test_file/output/"
engine = create_engine("mysql+pymysql://root:root@10.1.60.110:3306/datax?charset=utf8mb4",
max_overflow=0, # 超过连接池大小外最多创建的连接,为0表示超过5个连接后,其他连接请求会阻塞 (默认为10)
pool_size=5, # 连接池大小(默认为5)
pool_timeout=30, # 连接线程池中,没有连接时最多等待的时间,不设置无连接时直接报错 (默认为30)
pool_recycle=-1, # 多久之后对线程池中的线程进行一次连接的回收(重置) (默认为-1)
encoding='utf-8',
echo=False # 打印SQL语句
)
# 原始数据来源
OriginSql = """
select * from datax.datax_fdl ;
"""
allData = engine.execute(OriginSql)
res_file_name = f"mysql_{curr_date}.xlsx"
# 转化为DataFrame 并添加表头
df = pd.DataFrame(allData, columns=['id', 'lable', 'lable2', 'lable3', 'lable4', 'create_time', 'update_time'])
# 默认填充,会覆盖数据
df.to_excel(res_path + res_file_name
, index=False
, sheet_name='mysql' # 表格名
, na_rep=0 # 缺失值填充
, header=None # 不写入表头或者header=0
)
# 复制上面的df数据
df2 = df.copy()
# 写入两个sheet内,不在在单一的sheet追加,
# 追加模式 注意engine引擎,官网没写出来,但是不加上,mode报错
with pd.ExcelWriter(res_path + res_file_name, mode='a', engine="openpyxl") as writer:
df2.to_excel(writer, sheet_name='mysql', index=False) # 会自动改名为mysql1 ,不用追加模式会覆盖上面的结果
df2.to_excel(writer, sheet_name='mysql3', index=False)
writer.close()