vlambda博客
学习文章列表

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 pymysqlimport tracebackimport pandas as pdimport timefrom sqlalchemy import create_engineimport osimport numpy as npimport datetimeimport win32com.client as win32import 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 tableWHERR 条件1 and 条件2 '''#SELECT * FROM runoob.银行扣款表 limit 7df= 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的问题,等我整理好再做介绍哈,未完待续……