前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python自动化办公-数据库提取数据形成表格并发送至邮箱

Python自动化办公-数据库提取数据形成表格并发送至邮箱

作者头像
青阳
发布2021-04-02 07:03:01
3590
发布2021-04-02 07:03:01
举报
文章被收录于专栏:玩转云服务玩转云服务

前言

因为系统需要重装一下,原来一直用的程序提数设置自动任务的那个软件一时间找不到了。于是就想着自己写一个符合自己需求的python,这里和大家一起分享

脚本

代码语言:javascript
复制
#!/usr/bin/python
#coding: utf-8
import sys
import xlwt
import MySQLdb
import datetime
import time
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
import os.path

host = '*'
user = '*'
pwd = '*'
port = *
db = '*'
sheet_name = 'cx' + time.strftime("%Y-%m-%d")
filename = 'cx_' + time.strftime("%Y-%m-%d") + '.xls'
out_path = 'cx_'+ time.strftime("%Y-%m-%d") + '.xls'
print(out_path)
sql = "sql查询语句"
def export():
    conn = MySQLdb.connect(host,user,pwd,db,charset='utf8')
    cursor = conn.cursor()
    count = cursor.execute(sql)
    print("查询出" + str(count) + "条记录")
    if count>0:
        #来重置游标的位置
        cursor.scroll(0,mode='absolute')
        #搜取所有结果
        results = cursor.fetchall()
        # 获取MYSQL里面的数据字段名称
        fields = cursor.description
        workbook = xlwt.Workbook(encoding = 'utf-8') # workbook是sheet赖以生存的载体。
        sheet = workbook.add_sheet(sheet_name,cell_overwrite_ok=True)
        # 写上字段信息
        for field in range(0,len(fields)):
            sheet.write(0,field,fields[field][0])
        # 获取并写入数据段信息
        row = 1
        col = 0
        for row in range(1,len(results)+1):
            for col in range(0,len(fields)):
                sheet.write(row,col,u'%s'%results[row-1][col])
        workbook.save(out_path)
    else:
        print("无数据")

_user = "***@***"
_pwd = "**"
areceiver = "***@qq.com,***@***"
acc = "***@qq.com,***@***""

#如名字所示Multipart就是分多个部分
msg = MIMEMultipart()
msg["Subject"] =u'【数据统计_' + time.strftime("%Y-%m-%d") + u'】'
msg["From"] = _user
msg["To"] = areceiver
msg["Cc"] = acc

def send_email():
    conn = MySQLdb.connect(host,user,pwd,db,charset='utf8')
    cursor = conn.cursor()
    count = cursor.execute(sql)
    #---这是文字部分---
    content = '''您工作辛苦了,\n附件是系统每日统计情况,请查收!
    总计结果数为:'''+str(count)

    part = MIMEText(content,'plain','utf-8')
    msg.attach(part)
    if count>0:
        #---这是附件部分---
        #xls类型附件
        file_name = '' + filename
        part = MIMEText(open(file_name,'rb').read(), 'base64', 'gb2312')
        part["Content-Type"] = 'application/octet-stream'
        basename = os.path.basename(file_name)
        part["Content-Disposition"] = 'attachment; filename=%s' % basename.encode('gb2312')
        msg.attach(part)
        s = smtplib.SMTP("smtp.exmail.qq.com", timeout=465)#连接smtp邮件服务器,端口默认是25
        s.login(_user, _pwd)#登陆服务器
        s.sendmail(_user, areceiver.split(',') + acc.split(','), msg.as_string())#发送邮件
        print("Email send successfully")
        s.close()
    else:
        print("nothing to send!")
#调用函数
if __name__=="__main__":
    export()
    send_email()

提示

这个只是自己的一个记录,大家有什么好的想法和不懂的地方可以评论区留言


版权属于:青阳のBlog

本文链接:https://cloud.tencent.com/developer/article/1808599

作品采用:《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权

转载时须注明出处及本声明

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021 年 02 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 脚本
  • 提示
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档