pandas读取mysql并导出为excel

前言

业务需要从数据库导出数据为excel,并设置成自动化。这里用pandas写的数据导入导出,还算方便。配合crontab + shell脚本使用,每天晚上自动生成excel,然后cp到指定目录。shell脚本比较简单就不展示了,下面是python代码。

PS:如果服务器网络隔离不方便安装依赖,可以用pyinstaller打包成可执行文件。

安装依赖

pip install pandas sqlalchemy pymysql openpyxl -i https://mirrors.aliyun.com/pypi/simple

code

import pandas as pd
from sqlalchemy import create_engine

# 创建连接器
engine = create_engine("mysql+pymysql://username:password@ip:port/db_name")

def get_yesterday():
    """获取昨天的日期"""
    today=datetime.date.today()
    oneday=datetime.timedelta(days=1)
    yesterday=today-oneday  
    return yesterday

start_time = get_yesterday().isoformat() + " " + "08:00:00"
end_time = get_yesterday().isoformat() + " " + "21:00:00"

# SQL语句
# 指定日期时间
sql1 = """
select *
from cdr_2019_copy1
where start_time>="2019-07-02 08:55:00" and end_time < "2019-07-02 09:00:00";
"""
# 动态语句
sql2 = 'select * from cdr where start_time >= "' + start_time + '" and end_time < "' + end_time + '" ;'

# 读取数据库数据为dataframe
df1 = pd.read_sql(sql,engine)
print(df1)

# 导出为excel文件
filename = get_yesterday().strftime("%Y%m%d") + ".xlsx"
df2.to_excel(filename, index=False)

打包

pyinstaller -F -p C:\software\python\Lib\site-packages hello.py

如果用到了pymysql库,最好指定site-packages的目录位置。

posted @ 2021-07-02 11:09  花酒锄作田  阅读(539)  评论(0编辑  收藏  举报