python查询数据库并将结果写入Excel,保存至本地
最近在工作中,因为别的部门同事需要我帮忙每天查询固定的一些数据,懒病犯了,不想每天手动运行mysql查询语句,所以就想到了用python来操作mysql,每天定时自动将查询结果保存在一个大家都能看到的文件夹里,于是便有了下面一段:
# To add a new cell, type '# %%'
# To add a new markdown cell, type '# %% [markdown]'
# %%
# -*- coding: utf-8 -*-
"""
时间:20200916
用途:查询mysql数据,并保存至本地
状态:test
"""
import pymysql
import traceback
import pandas as pd
import time
from sqlalchemy import create_engine
import os
import numpy as np
import datetime
import win32com.client as win32
import sys
#将sql查询结果转成DataFrame
def mysql_to_df(sql,host,user,passwd,db,port,charset):
"""将sql查询结果转成DataFrame
param sql:sql查询语句
param host:mysql连接ip
param user:用户名
param passwd:密码
param db:需要使用的数据库
param port:端口,默认3306
charset:编码类型
return df:查询结果,DateFrame格式
"""
# 打开数据库连接
conn = pymysql.connect (host, user, passwd = passwd, db = db,port=port, charset=charset)
try:
results = pd.read_sql(sql,con=conn)
print("+++查询成功+++")
conn.close()
return results
except:
print("=====错误,请检查sql代码=====")
# 打印错误信息
traceback.print_exc()
# 如果发生错误则回滚
conn.rollback()
sql='''
#以下是需要查询的mysql代码
SELECT
字段名1,
字段名2,
字段名3,
……
FROM table
WHERR 条件1
and 条件2
'''
#SELECT * FROM runoob.银行扣款表 limit 7
df= mysql_to_df(sql,'ip','用户名','密码','数据库',端口,'编码类型')
write_in_time = time.strftime('%Y%m%d_%H%M%S') #写入时间,可有可无
file_name = "C:test/test1/"+str(write_in_time)+"中文名.xlsx"
df.to_excel(file_name,index=False,encoding="utf_8_sig")
关于如何定时调用python的问题,等我整理好再做介绍哈,未完待续……