废话不多说,直接贴代码:

#定时发送邮件的任务

#-*- coding:utf-8 -*-

import sys

import string, os, sys

import smtplib

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

import pymysql as mysql

import datetime

import schedule

import time

from datetime import datetime, date, timedelta

# reload(sys)

# sys.setdefaultencoding('utf8')

# todo presto config

presto_host_test = "localhost"

presto_port = 3306

#处理日期

#yesterday 表示昨天,例如:2020-03-09

yesterday = date.today() + timedelta(days = -1)

year = str(yesterday)[0:4]

def get_month(name):

if str(name)[5:6] == '0':return str(name)[6:7]

else: return str(name)[5:7]

def get_date(name):

if str(name)[9:10] == '0':return str(name)[10:11]

else: return str(name)[9:11]

# todo email config

# todo 表头 需要修改

email_table_head1 = [u"基金代码", u"基金名称",u"基金净值",u"累计净值",u"昨日涨幅",u"时间" ]

email_table_head2 = [u"基金代码", u"基金名称",u"基金净值",u"累计净值",u"平均涨幅" ]

email_table_head3 = [u"基金代码", u"基金名称",u"基金净值",u"累计净值",u"平均涨幅" ]

email_table_head4 = [u"基金代码", u"基金名称",u"基金净值",u"累计净值",u"平均涨幅" ]

email_table_head5 = [u"基金代码", u"基金名称",u"基金净值",u"累计净值",u"平均涨幅" ]

# todo 表title 需要修改

email_table_title1 = u"%s %s %s %s %s %s %s %s"%("一、",year,"年",get_month(yesterday),"月",

get_date(yesterday),"日","天天基金概括")

email_table_title2 = u"二、天天基金历史平均增幅最高"

email_table_title3 = u"三、过去三十天基金平均增幅最高"

email_table_title4 = u"四、过去三十天基金平均基金净值最高"

email_table_title5 = u"五、过去三十天基金平均累计净值最高"

# todo 邮件名称 需要修改

email_title = u"天天基金净值概况"

# todo 邮件发送列表 需要修改

email_to_list = [['flyba049@126.com']] # 接受人

def get_coums(name):

for x in email_to_list:

return

# todo execute sql 需要修改

sql_1 = "select * from fund_db.flyba_yestoday_rate"

sql_2 = "select * from fund_db.flyba_history_rate"

sql_3 = "select * from fund_db.flyba_max_rate30"

sql_4 = "select * from fund_db.flyba_max_net30"

sql_5 = "select * from fund_db.flyba_max_total30"

def send_mail(mailto_list, sub, context):

# todo to_list:收件人;sub:主题;content:邮件内容

mail_host = "imap.exmail.qq.com"

mail_user = "邮箱" #选择发送邮件的邮箱

mail_pass = "密码" #选择发送邮件的邮箱

me = mail_user

msg = MIMEMultipart()

msg['Subject'] = sub

msg['From'] = me

msg['To'] = ";".join(mailto_list)

msg.attach(context)

s = smtplib.SMTP()

s.connect(mail_host)

s.login(mail_user, mail_pass)

s.sendmail(me, mailto_list, msg.as_string())

s.close()

def make_html_table(title, rows):

if title:

html_content = u"""

%s

""" %title

else:

html_content = u""""""

html_content += u"""

for row in rows:

html_content += u"""

"""

for elem in row:

html_content += u"""

%s""" % elem

html_content += u"""

"""

html_content += u"""

"""

return html_content

def get_data_from_presto(host, port, sql, email_table_head):

rows = []

# todo 建立链接

cursor = mysql.connect(host='localhost',port = 3306,user='root', passwd='123456',db ='fund_db').cursor()

# todo 执行sql

cursor.execute(sql)

# todo 一行一行取数

for line in cursor.fetchall():

if line[0] is None:

rows.append(email_table_head)

else:

rows.append(line)

cursor.close()

# todo 返回列表

return rows

if __name__ == '__main__':

# todo 查到表内容

rows_context_1 = get_data_from_presto(presto_host_test, presto_port, sql_1,

email_table_head1)

rows_context_2 = get_data_from_presto(presto_host_test, presto_port, sql_2,

email_table_head2)

rows_context_3 = get_data_from_presto(presto_host_test, presto_port, sql_3,

email_table_head3)

rows_context_4 = get_data_from_presto(presto_host_test, presto_port, sql_4,

email_table_head4)

rows_context_5 = get_data_from_presto(presto_host_test, presto_port, sql_5,

email_table_head5)

# todo 加入表头

rows_context_1.insert(0, email_table_head1)

rows_context_2.insert(0, email_table_head2)

rows_context_3.insert(0, email_table_head3)

rows_context_4.insert(0, email_table_head4)

rows_context_5.insert(0, email_table_head5)

# todo 制作表格

html_content_1 = make_html_table( email_table_title1, rows_context_1)

html_content_2 = make_html_table( email_table_title2, rows_context_2)

html_content_3 = make_html_table( email_table_title3, rows_context_3)

html_content_4 = make_html_table( email_table_title4, rows_context_4)

html_content_5 = make_html_table( email_table_title5, rows_context_5)

# todo 发送邮件

for name_list in email_to_list:

def get_name(name):

if name == ['邮箱']:return '名字'

else: return 'Jack Yangon'

email_to_total = u"\n%s %s\n %s\n" % ("\n尊敬的",get_name(name_list),"\n:")

# 表示一个空格

mail_msg = '''

    您好,请查收如下天天基金数据,谢谢!

'''

# todo 格式化

context = MIMEText(email_to_total+mail_msg+

html_content_1 + html_content_2 + html_content_3 + html_content_4

+ html_content_5 ,

_subtype='html', _charset='utf-8')

send_mail(name_list, email_title,context)

print("send the email success")

python数据库自动对接_如何使用Python连接MySQL建立自动化监控报表相关推荐

  1. python数据库怎么下载_哪有Python数据库视频教程下载(python导入数据库视频教程)...

    在python中怎么引入数据库 数据库版本:MySQL Python版本:3.5 用想用MySQLdb来后来发现py3.5版本不支持,现pymysql 现在想将数据库adidas中的表jd_comme ...

  2. python数据库哪个好_终于明了python用什么数据库好

    网络方向的实践项目实际上是不需要的.Python实践项目可以是一个网站.我们可以让自己的博客.写博客时,我们可以巩固知识分Html + CSS + JS的基本知识,以及熟练使用Python web开发 ...

  3. python数据库模糊查询_原创:Python编写通讯录,支持模糊查询,利用数据库存储...

    1.要求 数据库存储通讯录,要求按姓名/电话号码查询,查询条件只有一个输入入口,自动识别输入的是姓名还是号码,允许模糊查询. 2.实现功能 可通过输入指令进行操作. (1)首先输入"add& ...

  4. oracle怎么自动备份数据,ORACLE数据库自动备份_详细步骤

    <ORACLE数据库自动备份_详细步骤>由会员分享,可在线阅读,更多相关<ORACLE数据库自动备份_详细步骤(9页珍藏版)>请在人人文库网上搜索. 1.ORACLE数据库自动 ...

  5. python数据库分层设计_基于Python的高中教学数据库设计

    文章对 Python 进行概述,并 对数据库的操作模式进行分析, 对数据库系统编译平台的目标指 令介绍,并对高中教学数据库的 设计进行研究. 摘 要 1 Python概述 计算机程序设计语言( Pyt ...

  6. python进行数据查询_如何进行python数据库查询?(实例解析)

    在这篇文章之中我们来了解一下关于python数据库的相关知识,有些朋友可能是刚刚接触到python这一编程语言,对这一方面不是特别的了解,在接下来这篇文章将会来带大家来了解关于python查询数据库中 ...

  7. python定期自动运行_干货分享 | 适合 Python 入门的 8 款强大工具,不会就你还不知道吧!...

    点击上方"人工智能Corner","星标或置顶公众号" 干货分享,第一时间送达 Python是一种开源的编程语言,可用于Web编程.数据科学.人工智能以及许多科 ...

  8. python和c++无缝对接_总结:Python学习 和 Python与C/C++交互

    本篇仅仅是Python的学习和Python和C++数据对接过程中的一些总结. 由于工作的需要,用一周的时间学习 Python. Python是基于C实现的一门解释型语言,由于其易用性,俘获了不少开发者 ...

  9. python数据库自动重连_python mysql断开重连的实现方法

    后台服务在运行时发现一个问题,运行约15分钟后,接口请求报错 pymysql.err.InterfaceError: (0, '') 这个错误提示一般发生在将None赋给多个值,定位问题时发现 pym ...

最新文章

  1. 【实用】一组原创原生样式的基础控件、UI组件样式(偏向移动端H5页面的样式)
  2. Github如何删除repository(仓库)
  3. 52是什么水平_送礼送什么白酒,适合送礼的白酒推荐,看这篇最新白酒送礼指南就行了...
  4. 【Python】青少年蓝桥杯_每日一题_5.15_打印 99 乘法表
  5. postgres 退出_如何退出postgresql
  6. 点评互联网创业的“南派”和“北派”
  7. 如何使用用户数据脚本在EC2实例上安装Apache Web Server
  8. PHP、C#、通用的DES加密
  9. System Verilog Assertion for debug
  10. mac怎么查node版本_py2neo基本操作(v4版本,亲测有效)
  11. oceanbase mysql模式安装了obproxy之后的连接方法
  12. NFT平台 NFTb将推出新版本,支持社会公益事业
  13. python 跳出for循环_Python跳出多重循环的方法
  14. GS3D An Efficient 3D Object Detection Framework for Autonomous Driving算法解析
  15. 安全电子签章密码技术规范_「签签课堂」(四)一篇读懂电子合同的专业术语...
  16. MySQL数据库与身份认证(鉴权)学习、复习笔记
  17. 《算法之美》-- 读书笔记(4)-- 2019
  18. SAP UI5 应用开发教程之七十九 - 采用测试驱动开发理念(Test Driven Development)进行 SAP UI5 应用的功能开发(一)的试读版
  19. ssoj4015: 永琳的竹林迷径(path)
  20. html5对电脑配置要求,bim软件对电脑配置要求高吗

热门文章

  1. 复习:线性表——双链表、循环链表
  2. 基础知识—表达式与语句-语句
  3. 华北水利水电大学计算机实验报告怎么写,考试类:华北水利水电大学C语言实验报告.doc...
  4. 周四下午3小时,4个行业分享,尽在信创行业发展高端研讨会数据库专场
  5. 【现场福利+直播通道】2020数据技术嘉年华正式“菜单”出炉,饕餮盛宴等你共享!...
  6. 何谓 SQL 注入,这个漫画告诉你
  7. 开工大吉:Oracle 18c已经发布及新特性介绍
  8. 一文解析Apache Avro数据
  9. 云小课|云小课带你快速掌握云数据迁移CDM
  10. 我是一个请求,我是如何被发送的?