需求:公司需要把两个数据库(A,B)中的数据导入到三个sheet页中,根据文献,有两种方式去解决。分别是用openpyxls和pandas,此处介绍pandas的处理办法。
代码:
import pandas as pd
import time
import openpyxl
import pymysql
#从数据库中读取数据
# 创建一个MySQL数据库的连接对象
conn = pymysql.connect(
host='112.35.3.232', port=1342,
user='maint01', password='B5@V8B-Wz+53',
database='ipoc_db', charset='utf8mb4'
)
conn2 = pymysql.connect( host='47.104.31.138', port=3306,
user='guest', password='Guest.618',
database='hrs', charset='utf8mb4' )
# 通过SQL从数据库读取数据创建DataFrame,conn表示之前的连接对象,index_col='eno'表示以eno为索引进行查询,如果数据量不大,可以删掉,反之,则有必要声明
df = pd.read_sql("SELECT ud_time,ud_ipocid,display,create_time,ud_defect "
"FROM t_user_defect,t_user,t_group "
"WHERE t_user_defect.ud_ipocid=t_user.us_ipocid "
"AND t_user.us_group_id=t_group.group_id",
conn,index_col='ud_time')
df3 = pd.read_sql('select * from tb_emp', conn2, index_col='eno')
#把数据导出到指定位置,并且生成2个sheet
with pd.ExcelWriter(r'C:\Users\wangjian\Desktop\test\3.xlsx') as writer:
df1 = df.to_excel(writer, sheet_name='df1')
df2 = df.to_excel(writer, sheet_name='df2')
df3 = df3.to_excel(writer, sheet_name='df3')
结果