#python版本3.7

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

"""

Created on Wed Aug 1 11:35:17 2018

@author: Administrator

"""

#系统 & 网络下载 & 解压缩

import os, sys

#时间 & 网络下载 & 解压缩

import time

#多线程

import threading

#邮件相关

import smtplib

#定时相关

import datetime

import time

import xlwt

import datetime as dt

from email import encoders

from email.mime.base import MIMEBase

from email.mime.multipart import MIMEMultipart

import pymysql

import pandas as pd

from email.mime.text import MIMEText

class mail():

def __init__(self):

self.me = 'yourpassword@163.com'

self.user = 'youremail@163.com'

self.password = 'yourpassword'

#注意163是受权码 QQ邮箱依据权限设置不一样也可能须要受权码,不是输入邮箱密码

self.mail_host = 'smtp.163.com'

def send_mail(self, to_list, sub, excel):

msg = MIMEMultipart()

msg['From'] =self.me

msg['To'] =".".join(to_list)

msg['Subject'] = '同步接口巡查'

#抄送

msg['Cc'] = 'xxx@qq.com'

#邮件正文

msg.attach(MIMEText('自动检查结果邮件', 'plain', 'utf-8'))

print(to_list)

part = MIMEBase('application', "octet-stream")

part.set_payload(open(r'C:\test\test.xls', "rb").read())

encoders.encode_base64(part)

part.add_header('Content-Disposition', 'attachment; filename="auth_order.xlsx"')

msg.attach(part)

try:

s = smtplib.SMTP()

s.connect(self.mail_host)

s.login(self.user, self.password)

s.sendmail(self.me, to_list, msg.as_string())

s.close()

return True

except Exception as e:

print(str(e))

return False

class monitor(threading.Thread):

def __init__(self, mail_list):

super(monitor, self).__init__()

self.mail_list = mail_list

def run(self):

while True:

now = datetime.datetime.now()

print(now.hour, now.minute)

#设置天天几点几分发送,譬如天天16时18分则为下面的写法

if now.hour == 12 and now.minute == 55:

print('do my task once')

###################################################### (1)定时任务代码,此处替换成你的 定时任务代码

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

print('doing my task')

conn = pymysql.connect(host='xxx', port=23310, user='op_root', password='xxxx',

database='dw', charset='utf8')

# cursor得到python执行Mysql命令的方法,也就是操做游标

cur = conn.cursor()

# v_sql = "select * from risk_task"

v_sql = sql = "SELECT DATE(t3.app_date) AS app_date,COUNT(t3.order_no) AS order_num, \

SUM(CASE WHEN t3.task_status =6 then 1 else 0 end)/COUNT(t3.order_no) AS order_rate, \

sum(t4.FPD)/SUM(t4.FPD_amt) AS fpd_rate,SUM(t5.coin)/SUM(t5.coin_sum) AS coin_rate \

FROM \

(SELECT t1.app_date,t1.customer_id,t2.order_no,t2.task_status \

FROM risk_task t1 \

LEFT JOIN \

(SELECT customer_id,order_no,task_status \

FROM risk_task \

WHERE loan_type = 4 and vip_flag not in ('VIP','0') \

AND close_reason NOT LIKE '%测试%' \

AND DATE(app_date)>='2018-01-01') t2 \

ON t1.customer_id = t2.customer_id \

WHERE t1.loan_type = 3 and t1.vip_flag not in ('VIP','0') \

AND t1.close_reason NOT LIKE '%测试%' \

AND DATE(t1.app_date)>='2018-01-01' \

AND DATE(t1.app_date)<=date_sub(CURDATE(),interval 1 day)) t3 \

LEFT JOIN \

(SELECT order_id, \

CASE WHEN TO_DAYS(CASE WHEN actl_date IS NULL THEN CURDATE() ELSE \

actl_date END)-TO_DAYS(plan_date)>0 THEN loan_amount ELSE 0 END AS FPD, \

loan_amount FPD_amt \

FROM risk_repay_plan \

WHERE period=1 and prod_line='商城分期订单' and vip_flag not in ('VIP','0') and state not in (5,127))t4 \

ON t3.order_no=t4.order_id \

LEFT JOIN \

(SELECT order_id, \

case when dpd>0 then loanbalanceb else 0 end AS coin, \

loanbalanceb as coin_sum \

FROM risk_overdue \

WHERE prod_line ='商城' AND vip_flag NOT IN ('VIP','0') AND DATE(data_date)=date_sub(CURDATE(),interval 1 day))t5 \

ON t3.order_no=t5.order_id \

GROUP BY DATE(t3.app_date)"

cur.execute(v_sql)

# data = pd.read_sql(sql,db)

# data.to_excel(r'C:\test\auth_order.xlsx')

# fetchall()则是接收所有的返回结果行

rows = cur.fetchall()

v_cnt = len(rows)

# print(data.head())

# 生成excel文件

book = xlwt.Workbook()

# 若是对一个单元格重复操做,会引起

# returns error:

# Exception: Attempt to overwrite cell:

# sheetname=u'sheet 1' rowx=0 colx=0

# 因此在打开时加cell_overwrite_ok=True解决

sheet1 = book.add_sheet('Sheet1', cell_overwrite_ok=True)

# 设置样式

styleBlueBkg = xlwt.easyxf(

'pattern: pattern solid, fore_colour ocean_blue; font: bold on;'); # 80% like

# styleBlueBkg = xlwt.easyxf('pattern: pattern solid, fore_colour sky_blue;');

# blueBkgFontStyle = xlwt.XFStyle()

# blueBkgFontStyle.Pattern = blueBackgroundPattern;

# styleBlueBkg = blueBkgFontStyle;

styleBold = xlwt.easyxf('font: bold on');

# 日期格式转化

dateFormat = xlwt.XFStyle()

dateFormat.num_format_str = 'yyyy/mm/dd'

# 居中

style = xlwt.XFStyle() # 建立一个样式对象,初始化样式

al = xlwt.Alignment()

al.horz = 0x02 # 设置水平居中

al.vert = 0x01 # 设置垂直居中

style.alignment = al

# sheet1.write(0, 0, dt.date.today(), dateFormat)

# worksheet.write(0, 0, dt.date.today(), dateFormat)

# 表头标题

sheet1.write(0, 0, 'number', styleBlueBkg)

sheet1.write(0, 1, 'app_date', styleBlueBkg)

sheet1.write(0, 2, 'order_number', styleBlueBkg)

sheet1.write(0, 3, 'order_rate', styleBlueBkg)

sheet1.write(0, 4, 'fpd_rate', styleBlueBkg)

sheet1.write(0, 5, 'coin_rate', styleBlueBkg)

# sheet1.write(0, 6, '姓名')

# sheet1.write(0, 7, '职位')

# sheet1.write(0, 8, '案件来源')

# sheet1.write(0, 9, '调查缘由')

# sheet1.write(0, 10, '涉及合同号')

# first_col=sheet1.col(0) #xlwt中是行和列都是从0开始计算的

sec_col = sheet1.col(1)

sec_col.width = 256 * 20

# 每一列写入excel文件,否则数据会全在一个单元格中

num = 1

for i in range(len(rows)):

for j in range(6):

# print (rows[i][j])-

# print ("--------")

# i+1表示从Excel第2行开始写数据,第1行为表头

if j == 0: # 写序号

sheet1.write(i + 1, 0, num)

elif j == 1: # 写日期

sheet1.write(i + 1, 1, rows[i][j - 1], dateFormat)

else: # 写其余数据

sheet1.write(i + 1, j, rows[i][j - 1])

num = num + 1

# c:\\test\\my doc

# r'E:\picture\quanPing.png'

book.save(r'C:\test\test.xls')

print('do my task success')

###################################################### 结束(1)

###################################################### (2)发送邮件

mail_sub = 'auth_order'

mail_content = r'C:\test\test.xls'

m = mail()

if m.send_mail(self.mail_list, mail_sub, mail_content):

print('send mail successed.')

else:

print('send mail failed.')

###################################################### 结束(2)

# 每隔60秒检测一次

time.sleep(60)

if __name__ == '__main__':

if len(sys.argv) == 1:

m = monitor(['yours@qq.com'])

m.start()

#m = monitor(['xxx@xxx.com','xxx@xxx.com'])

发送成功的邮件截图:

python定时导出已发送文件_Python链接数据库查询导出查询结果到Excel并定时发送邮件到指定邮箱,实现巡检功能(亲测可用!!!)...相关推荐

  1. python亿级mysql数据库导出_Python之csv文件从MySQL数据库导入导出的方法

    Python之csv文件从MySQL数据库导入导出的方法 发布时间:2020-10-26 07:39:02 来源:脚本之家 阅读:53 作者:张行之 Python从MySQL数据库中导出csv文件处理 ...

  2. 定时运行python脚本并发送邮件_python实现定时发送邮件到指定邮箱

    本文实例为大家分享了python实现定时发送邮件到指定邮箱的具体代码,供大家参考,具体内容如下 整个链路:传感器采集端采集数据,边缘端上传数据库,从数据库拿到数据. 产品端有个自动出报告的需求,并且希 ...

  3. python能封装成exe文件_python文件封装成*.exe文件(单文件和多文件)

    环境:win10 64位  python3.7 单*.py文件打包 Python GUI:程序打包为exe 一.安装Pyinstaller,命令pip install Pyinstaller,(大写的 ...

  4. python企业微信机器人发送文件

    python企业微信机器人发送文件 import requests#传入文件 def post_file(id_url,wx_url,file):data = {'file': open(file,' ...

  5. YDOOK: Sanic: Python request post请求 上传照片或文件 详细具体步骤 亲测可用!

    YDOOK: Sanic: Python request post请求 上传照片或文件 详细具体步骤 亲测可用! ©YDOOK JYLin 1. 项目目录架构: Upload result: 上传结果 ...

  6. 【wencai】一文学会通过wencai包访问同花顺i问财实现AI选股(已修复链接报错问题,并扩展函数功能,修改后源代码亲测可用)

    一文学会通过wencai包访问同花顺i问财实现AI选股(已修复链接报错问题,并扩展函数功能,修改后源代码亲测可用) 前言 一.准备工作很重要 二.wencai问财怎么用? 1.实用基础篇(wencai ...

  7. 自己制作的 macOS Mojave 10.15.3 iso 文件,亲测可用(附 VMware15 安装 macOS Catalina 图文教程与 macO Catalina.iso 镜像下载地址)

    注:如果需要分享此资源,请注明原作者,不要把别人的东西当做自己的成果,也不要把别人免费分享出来的东西以有偿的方式去分享. 自己制作的 macOS Mojave 10.15.3 iso 文件,亲测可用, ...

  8. 微信支付rootca.pem通用根证书文件,亲测可用

    微信支付rootca.pem通用根证书文件,2018年5月后微信支付默认不提供. 我当初找了好久又花钱又费时才找的可以用的证书,亲测可用. 链接:https://download.csdn.net/d ...

  9. CentOS7下mysql定时备份并发送邮件到指定邮箱脚本

    CentOS7下mysql定时备份并发送邮件到指定邮箱脚本 网上有对应的教程,但是使用的mutt发送的邮件. 我从昨晚九点开始搞,搞到凌晨三点都没弄好,早上又搞了一早上也没弄好.因为网上的教程太老,或 ...

最新文章

  1. 【Android 事件分发】ItemTouchHelper 实现拖动排序
  2. 【 Linux 】单台服务器上并发TCP连接数(转)
  3. 部署RocketMQ的管理工具
  4. mvn 本地jar包 加入自己的maven仓库
  5. Rails 3.1 CoffeeScript SASS初体验
  6. 信息学奥赛一本通(1176:谁考了第k名)——qsort 函数
  7. Kinect开发学习笔记之(四)提取颜色数据并用OpenCV显示
  8. exchange 20132016配置使用IMAPPOP
  9. python怎么写运维脚本_python运维脚本实例
  10. 支付宝的授权回调目录只能配置一个域名吗_腾讯QQ授权登录(asp.net + angular)...
  11. visifire3.6.8 去水印方法
  12. 《斯坦福算法博弈论二十讲》学习笔记(持续更新)
  13. ToStringBuilder用法
  14. 【FFmpeg命令】jpg与yuv(批量)互转
  15. 在计算机上如何打开资源管理器,资源管理器怎么打开?打开资源管理器的5种方法...
  16. python nlp文本摘要_NLP(十一) 提取文本摘要
  17. 2020年四川省大型舞台艺术创作申报材料流程及申请奖励补助
  18. uniApp和微信小程序好看的我的页面(有源码)
  19. 程序员常用的三款在线作图工具
  20. 数字图像处理第九章——形态学图像处理

热门文章

  1. TM1637驱动数码管
  2. Animated之基础篇-概述
  3. zblog访问记录v2.5.0
  4. python yolov5 脚本制作(第一部分:环境搭建、yolov5源码、权重文件获取、pycharm配置、pytorch下载、初次运行yolov5代码)
  5. 计算机社团活动效果取得成绩,电脑社团工作总结
  6. 【网页图标】favicon.ico文件的设置
  7. [POJ2187]Beauty Contest(计算几何-旋转卡壳-最远点对)
  8. 括弧匹配检验(括号匹配问题)
  9. 新手做独立站需要掌握哪些技能
  10. windows与unix文件格式转换