python查数据库发邮件

有时候需要将数据库中的统计信息统计好之后,直接每天定时发邮件。

可用python脚本写好逻辑后,使用crontab每天定时执行

 

# -*- coding: UTF-8 -*-
import MySQLdb
import smtplib 
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText

def queryDBdata():    
    #连数据库
    conn = MySQLdb.connect(host='****', user='***', passwd='****', db='***', port=3307, charset='utf8')
    querySQL="select sum(num),date from (SELECT count(e.order_num) num, date_format(r.order_date,'%Y-%m-%d') date from orders_extension e INNER JOIN commission_order r ON e.order_num=r.order_no where e.ex_cookie like '%bd%' and e.biz_type='COMMISSION' and date_format(r.order_date,'%Y-%m')=date_format(NOW(),'%Y-%m') group by date_format(r.order_date,'%Y-%m-%d')  union ALL  SELECT count(e.order_num) num, date_format(r.order_date,'%Y-%m-%d') date from orders_extension e INNER JOIN order_info  r ON e.order_num=r.order_num where e.ex_cookie like '%bd%' and e.biz_type='PPB' and date_format(r.order_date,'%Y-%m')=date_format(NOW(),'%Y-%m')  group by date_format(r.order_date,'%Y-%m-%d') ) a group by date"
    cur = conn.cursor()
    cur.execute("set names 'utf8'")
    cur.execute(querySQL)
 
    #获取数据
    data="每天晚上九点自动发统计邮件\n\n"+"|    总订单数        |        日期                 |"+"\n"
    results = cur.fetchall()
    for r in results:
        data=data+"|    "+str(r[0])+"    "+"|    "+str(r[1])+"    |\n"
      
    return data



def send_mail(content):
    try:
        mailToList=['yebing.li@163.com',"erte@163.com"]
        sender='yebing.li@163.com'
        mailto=",".join(mailToList)
        msg = MIMEMultipart()
        msg['Subject'] = "本月****来源的订单"
        msg['to'] = mailto
        msg['From'] = sender
        body = MIMEText(content)
        msg.attach(body)
        smtp = smtplib.SMTP('mail.163.com')
        smtp.sendmail(sender,mailToList,msg.as_string())

        smtp.quit()
    except smtplib.SMTPException, e:
        print "error...%d: %s" % (e.args[0], e.args[1])
        
        
        
if __name__=="__main__":
    content=queryDBdata()
    send_mail(content)

 

 

 其中crontab  -e 编辑表达式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值