一直从csdn参考大神们的文章,自己从来没发表过。最近新学python,有点心得,来这里记录分享一下。本人非程序员,学习python只是个人兴趣爱好而已,文中如有不妥之处,大神们见谅。
先说说我的需求:客户要求每周出一个excel报表,数据格式是一样的。只是数据会每周不同而已。原本是自己写了个mysql语句做查询后,复制粘贴到excel里,然后邮件发送。如此长期工作后,突然发现,这个重复劳动完全可以用python去执行。于是就有了本文的研究。
mysql总共有7张表内容,对应复制粘贴到excel的7个页(sheet)。原本我的代码是:
import os
import pandas
from datetime import datetime
from sqlalchemy import create_engine
from openpyxl.utils import get_column_letter
from openpyxl import load_workbook, workbook
# 整理当前时间
now = datetime.now()
date_time = now.strftime("%Y.%m.%d_%H.%M.%S")
print(date_time)
# 设置数据库连接(host='MySQL服务器地址',port=端口,user='用户名',passwd='密码',db='库名',charset='编码')
# 新式连接方式
MYSQL_HOST = 'mysql的IP地址'
MYSQL_PORT = 'mysql的端口'
MYSQL_USER = '用户名'
MYSQL_PASSWORD = '密码'
MYSQL_DB = 'mysql库名'
conn = create_engine('mysql+pymysql://%s:%s@%s:%s/%s?charset=utf8' % (MYSQL_USER, MYSQL_PASSWORD, MYSQL_HOST, MYSQL_PORT, MYSQL_DB))
# 编辑SQL语句
sql01 = 'SELECT * FROM xx.`表01`'
sql02 = 'SELECT * FROM xx.`表02`'
sql03 = 'SELECT * FROM xx.`表03`'
sql04 = 'SELECT * FROM xx.`表04`'
sql05 = 'SELECT * FROM xx.`表05`'
sql06 = 'SELECT * FROM xx.`表06`'
sql07 = 'SELECT * FROM xx.`表07`'
# 打印表内容,纯粹看看而已
sql_data01 = pandas.read_sql_query(sql01,conn)
print(sql_data01)
sql_data02 = pandas.read_sql_query(sql02,conn)
print(sql_data02)
sql_data03 = pandas.read_sql_query(sql03,conn)
print(sql_data03)
sql_data04 = pandas.read_sql_query(sql04,conn)
print(sql_data04)
sql_data05 = pandas.read_sql_query(sql05,conn)
print(sql_data05)
sql_data06 = pandas.read_sql_query(sql06,conn)
print(sql_data06)
sql_data07 = pandas.read_sql_query(sql07,conn)
print(sql_data07)
# 检查是否存在同名excel
excelfile = str(date_time)+"xx.xlsx"
if os.path.exists(excelfile):
print("已存在"+ex