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

#定时发送邮件的任务

#-*- 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. Jmeter脚本 GUI和非GUI启动方式
  2. Mac Book 问题汇集
  3. 和华为hr电话面试的反思
  4. 小牛想要进大厂,距离拿百万高薪,进入AI行业你还缺哪些?
  5. C#中读取文件内容本文分步介绍了如何从文本文件
  6. “平行驾驶”是无人车上路的安全高效智能途径!
  7. 实验计算机控制器的实验结论,计算机毕业论文控制器实验报告.doc
  8. 如何在VMware软件上安装Red hat(红帽)Linux6.9操作系统
  9. 键盘映射keybmap工具使用
  10. Java开发实用工具推荐
  11. Word文档输入网址自动换行的解决办法
  12. php web helloworld,webim_server.php
  13. GROMACS Tutorial 2-Membrane Protein: KALP15 in DPPC
  14. 基于Arduino的温湿度上传OneNET,同时SIM900A短信报警(1)
  15. java模拟手机浏览web_在PC上测试移动端网站和模拟手机浏览器的5大方法
  16. Open Inventor 10.9.2 Crack
  17. HACK RF学习之旅记录3——安装WIN10+Ubuntu双系统
  18. 作为学科的计算机科学(COMPUTING AS A DISCIPLINE)
  19. [JZOJ6355] 【NOIP2019模拟】普
  20. 机器人中的数值优化|【一】数值优化基础

热门文章

  1. bios文件查看工具_“主板BIOS教程”手把手教你刷bios,多种bios教程
  2. 想深度探究数据库内核技术,墙裂推荐你看看这个
  3. 资源放送丨《如何从零快速搭建一整套监控体系(日志采集+主机+数据库)》PPT视频...
  4. 缓存世界中的三大问题及解决方案
  5. 解读年度数据库PostgreSQL:如何处理并发控制(一)
  6. 2019年1月数据库流行度排行: PostgreSQL蝉联2018年度冠军
  7. 近数据处理(NDP)——GaussDB(for MySQL)性能提升的秘密
  8. 解析Redis操作五大数据类型常用命令
  9. 深度解读MRS IoTDB时序数据库的整体架构设计与实现
  10. 人人都在谈的图数据库到底是个啥?