日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

如何使用Python自動生成報表并以郵件發(fā)送

瀏覽:23日期:2022-07-08 10:21:35

數(shù)據分析師肯定每天都被各種各樣的數(shù)據數(shù)據報表搞得焦頭爛額,老板的,運營的、產品的等等。而且大部分報表都是重復性的工作,這篇文章就是幫助大家如何用Python來實現(xiàn)報表的自動發(fā)送,解放你的勞動力,可以讓你有時間去做更有意思的事情。

首先來介紹下實現(xiàn)自動報表要使用到的Python庫:

pymysql 一個可以連接MySQL實例并且實現(xiàn)增刪改查功能的庫datetime Python標準庫中自帶的關于時間的庫openpyxl 一個可以讀寫07版以后的Excel文檔(.xlsx格式也支持)的庫smtplib SMTP即簡單郵件傳輸協(xié)議,Python簡單封裝成了一個庫email 一個用來處理郵件消息的庫為什么使用openpyxl庫來處理Excel呢?因為它支持每個sheet的行數(shù)為100W+,也是支持xlsx格式的文件。如果你接受xls文件,并且每個sheet的行數(shù)小于6W,也是可以使用xlwt庫,它對大文件的讀取速度要大于openpyxl。

接下來我們就進入實戰(zhàn)部分,來正式實現(xiàn)這個過程。我把整個實現(xiàn)過程分成幾個函數(shù)的方式來實現(xiàn),這樣看著會比較有結構感。

一、首先導入所有要用到的庫

# encoding=utf-8import pymysql as pmsimport openpyxlimport datetimefrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.header import Headerimport smtplib

二、 編寫一個傳入sql就返回數(shù)據的函數(shù)get_datas(sql)

def get_datas(sql): # 一個傳入sql導出數(shù)據的函數(shù) # 跟數(shù)據庫建立連接 conn = pms.connect(host=’實例地址’, user=’用戶’, passwd=’密碼’, database=’庫名’, port=3306, charset='utf8') # 使用 cursor() 方法創(chuàng)建一個游標對象 cursor cur = conn.cursor() # 使用 execute() 方法執(zhí)行 SQL cur.execute(sql) # 獲取所需要的數(shù)據 datas = cur.fetchall() #關閉連接 cur.close() #返回所需的數(shù)據 return datas

三、 編寫一個傳入sql就返回數(shù)據的字段名稱的函數(shù)get_datas(sql),因為一個函數(shù)只能返回一個值,這邊就用2個函數(shù)來分別返回數(shù)據和字段名稱(也就是excel里的表頭)

def get_fields(sql): # 一個傳入sql導出字段的函數(shù) conn = pms.connect(host=’rm-rj91p2yhl9dm2xmbixo.mysql.rds.aliyuncs.com’, user=’bi-analyzer’, passwd=’pcNzcKPnn’, database=’kikuu’, port=3306, charset='utf8') cur = conn.cursor() cur.execute(sql) # 獲取所需要的字段名稱 fields = cur.description cur.close() return fields

四、 編寫一個傳入數(shù)據、字段名稱、存儲地址返回一個excel 的函數(shù)et_excel(data, field, file)

def get_excel(data, field, file): # 將數(shù)據和字段名寫入excel的函數(shù) #新建一個工作薄對象 new = openpyxl.Workbook() #激活一個新的sheet sheet = new.active #給sheet命名 sheet.title = ’數(shù)據展示’ #將字段名稱循環(huán)寫入excel第一行,因為字段格式列表里包含列表,每個列表的第一元素才是字段名稱 for col in range(len(field)): #row代表行數(shù),column代表列數(shù),value代表單元格輸入的值,行數(shù)和列數(shù)都是從1開始,這點于python不同要注意 _ = sheet.cell(row=1, column=col+1, value=u’%s’ % field[col][0]) #將數(shù)據循環(huán)寫入excel的每個單元格中 for row in range(len(data)): for col in range(len(field)): #因為第一行寫了字段名稱,所以要從第二行開始寫入 _ = sheet.cell(row=row+2, column=col + 1, value=u’%s’ % data[row][col]) #將生成的excel保存,這步是必不可少的 newworkbook = new.save(file) #返回生成的excel return newworkbook

五、 編寫一個自動獲取昨天日期字符串格式的函數(shù)getYesterday()

def getYesterday(): # 獲取昨天日期的字符串格式的函數(shù) #獲取今天的日期 today = datetime.date.today() #獲取一天的日期格式數(shù)據 oneday = datetime.timedelta(days=1) #昨天等于今天減去一天 yesterday = today - oneday #獲取昨天日期的格式化字符串 yesterdaystr = yesterday.strftime(’%Y-%m-%d’) #返回昨天的字符串 return yesterdaystr

六、編寫一個生成郵件的函數(shù)create_email(email_from, email_to, email_Subject, email_text, annex_path, annex_name)

def create_email(email_from, email_to, email_Subject, email_text, annex_path, annex_name): # 輸入發(fā)件人昵稱、收件人昵稱、主題,正文,附件地址,附件名稱生成一封郵件 #生成一個空的帶附件的郵件實例 message = MIMEMultipart() #將正文以text的形式插入郵件中 message.attach(MIMEText(email_text, ’plain’, ’utf-8’)) #生成發(fā)件人名稱(這個跟發(fā)送的郵件沒有關系) message[’From’] = Header(email_from, ’utf-8’) #生成收件人名稱(這個跟接收的郵件也沒有關系) message[’To’] = Header(email_to, ’utf-8’) #生成郵件主題 message[’Subject’] = Header(email_Subject, ’utf-8’) #讀取附件的內容 att1 = MIMEText(open(annex_path, ’rb’).read(), ’base64’, ’utf-8’) att1['Content-Type'] = ’application/octet-stream’ #生成附件的名稱 att1['Content-Disposition'] = ’attachment; filename=’ + annex_name #將附件內容插入郵件中 message.attach(att1) #返回郵件 return message

七、 生成一個發(fā)送郵件的函數(shù)send_email(sender, password, receiver, msg)

def send_email(sender, password, receiver, msg): # 一個輸入郵箱、密碼、收件人、郵件內容發(fā)送郵件的函數(shù) try: #找到你的發(fā)送郵箱的服務器地址,已加密的形式發(fā)送 server = smtplib.SMTP_SSL('smtp.mxhichina.com', 465) # 發(fā)件人郵箱中的SMTP服務器 server.ehlo() #登錄你的賬號 server.login(sender, password) # 括號中對應的是發(fā)件人郵箱賬號、郵箱密碼 #發(fā)送郵件 server.sendmail(sender, receiver, msg.as_string()) # 括號中對應的是發(fā)件人郵箱賬號、收件人郵箱賬號(是一個列表)、郵件內容 print('郵件發(fā)送成功') server.quit() # 關閉連接 except Exception: print(traceback.print_exc()) print('郵件發(fā)送失敗')

八、建立一個main函數(shù),把所有的自定義內容輸入進去,最后執(zhí)行main函數(shù)

def main(): print(datetime.datetime.now()) my_sql = sql = 'SELECT a.id ’用戶ID’, a.gmtCreate ’用戶注冊時間’, af.lastLoginTime ’最后登錄時間’, af.totalBuyCount ’歷史付款子單數(shù)’, af.paidmountUSD ’歷史付款金額’, af.lastPayTime ’用戶最后支付時間’ FROM table a LEFT JOIN tableb af ON a.id= af.accountId ;' # 生成數(shù)據 my_data = get_datas(my_sql) # 生成字段名稱 my_field = get_fields(my_sql) # 得到昨天的日期 yesterdaystr = getYesterday() # 文件名稱 my_file_name = ’user attribute’ + yesterdaystr + ’.xlsx’ # 文件路徑 file_path = ’D:/work/report/’ + my_file_name # 生成excel get_excel(my_data, my_field, file_path) my_email_from = ’BI部門自動報表機器人’ my_email_to = ’運營部’ # 郵件標題 my_email_Subject = ’user’ + yesterdaystr # 郵件正文 my_email_text = 'Dear all,nt附件為每周數(shù)據,請查收!nnBI團隊 ' #附件地址 my_annex_path = file_path #附件名稱 my_annex_name = my_file_name # 生成郵件 my_msg = create_email(my_email_from, my_email_to, my_email_Subject, my_email_text, my_annex_path, my_annex_name) my_sender = ’阿里云郵箱’ my_password = ’我的密碼’ my_receiver = [10001@qq.com’]#接收人郵箱列表 # 發(fā)送郵件 send_email(my_sender, my_password, my_receiver, my_msg) print(datetime.datetime.now())if __name__ == '__main__': main();

以上就是如何使用Python自動生成報表并以郵件發(fā)送的詳細內容,更多關于python 生成報表郵件發(fā)送的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
男女男精品网站| 日韩精品免费视频一区二区三区| 夜夜精品视频| 136国产福利精品导航网址| 欧美国产不卡| 国产精品mv在线观看| 欧美亚洲网站| 国产欧美一区二区精品久久久| 丝袜美腿亚洲色图| 欧美日韩四区| 国产婷婷精品| 欧美日韩国产免费观看| 色偷偷色偷偷色偷偷在线视频| 国产aa精品| 久久激情婷婷| 亚洲一区二区三区高清| 蜜臀久久99精品久久久久久9| 亚洲人成高清| 久久精品资源| 久久婷婷亚洲| 亚洲欧洲日韩| 精品久久精品| 国产韩日影视精品| 日韩精品久久久久久久软件91| 国产日产一区| 久久蜜桃精品| 好看的av在线不卡观看| 亚洲欧美视频一区二区三区| 亚洲精品综合| 国产一区二区三区久久| 极品裸体白嫩激情啪啪国产精品| 日韩中文字幕一区二区三区| 欧美日韩a区| 久久视频国产| 久久国产精品免费一区二区三区| 国产一区二区三区视频在线| 日韩影院免费视频| 久久精品色播| 日韩久久一区| 亚洲午夜精品久久久久久app| 日韩精品亚洲专区在线观看| www在线观看黄色| 国产一区白浆| 日韩免费在线| 久久午夜影院| 日韩av一区二区三区| 激情久久五月| 国产一区二区三区精品在线观看| 免费精品视频最新在线| 日韩大片在线| 国产精品99久久免费| 蜜桃视频在线观看一区| 欧美影院三区| 欧美日韩精品免费观看视欧美高清免费大片| 日韩精品五月天| 日韩一区精品视频| 好吊一区二区三区| 92国产精品| 波多视频一区| 日韩中文首页| av在线日韩| 国产麻豆久久| 人人香蕉久久| 天堂√8在线中文| 国产66精品| 精品一区二区三区在线观看视频| 欧美日韩xxxx| 欧美日本不卡| 国产一区二区三区国产精品| av资源新版天堂在线| 激情婷婷亚洲| 91大神在线观看线路一区| 日本不卡一二三区黄网| 国产精品亚洲一区二区在线观看| 日韩免费一区| 石原莉奈在线亚洲二区| 国产探花在线精品一区二区| 精品亚洲自拍| 在线综合亚洲| 国产精品视频一区二区三区 | 超碰在线99| 深夜日韩欧美| 日韩在线成人| 久久免费福利| 久久精品国产68国产精品亚洲| 爽爽淫人综合网网站| 视频一区视频二区中文字幕| 国产精品久久久久久久久久妞妞| 在线看片国产福利你懂的| 99视频精品免费观看| 久久精品三级| 日本亚洲视频| 日韩电影免费在线观看| 日韩国产高清在线| 久久一区二区三区电影| 欧美精品aa| 久久福利一区| 91精品韩国| 欧美黄页在线免费观看 | 亚洲欧美日本日韩| 中文字幕在线免费观看视频| 亚洲图片久久| 欧美女激情福利| 久久精品主播| 国产精品精品国产一区二区| 日韩精品一区二区三区中文字幕| 激情欧美亚洲| 欧美sss在线视频| 国产66精品| 成人在线视频免费看| 国产精品亚洲综合在线观看| 在线观看亚洲精品福利片| 狠狠久久婷婷| 99久久精品国产亚洲精品| 国产一区二区三区视频在线| 国产精品观看| 国产日本精品| 91精品日本| 亚洲精品日韩久久| 亚洲三级国产| 亚洲人成毛片在线播放女女| 美日韩精品视频| 视频一区欧美精品| 日韩一区网站| 国产欧美69| 精品国产一区二区三区av片| 捆绑调教美女网站视频一区| 国产精品毛片久久| 精品成人18| 日韩欧美精品| 91久久久久| 最近国产精品视频| 国产精品主播| 在线精品亚洲欧美日韩国产| 免费久久精品| 日韩在线黄色| 一区二区国产在线| 欧美日韩夜夜| 日韩免费小视频| 伊人久久亚洲热| 日韩av中文字幕一区| 福利一区二区免费视频 | 国产视频一区在线观看一区免费| 亚洲精品无吗| 岛国av在线播放| 久久国产精品久久w女人spa| 91亚洲无吗| 成人啊v在线| 欧美一区成人| 韩国精品主播一区二区在线观看| 先锋影音国产一区| 欧美a一区二区| 免费欧美日韩| 国产一区2区| 四虎在线精品| 色婷婷狠狠五月综合天色拍| 玖玖精品视频| 国产精品成人国产| 久久人人88| 久久久国产精品入口麻豆 | xxxxx性欧美特大| 天堂成人免费av电影一区| 开心激情综合| 日韩精品五月天| 欧美手机在线| 精品成av人一区二区三区| 亚洲aⅴ网站| 亚洲欧洲一区| 色婷婷久久久| 精品视频97| 国产伦一区二区三区| 久久精品国产68国产精品亚洲| 美女高潮久久久| 欧美日一区二区三区在线观看国产免| 免费在线小视频| 成人国产精品一区二区网站| 日韩中文字幕无砖| 久久都是精品| 亚洲成人一区| 欧美日韩视频免费观看| 久久精品国产精品亚洲毛片| 天堂av一区| 天堂精品久久久久| 亚洲综合色婷婷在线观看| 伊人久久大香线蕉av不卡| 国产 日韩 欧美 综合 一区| 深夜福利一区| 日韩中出av| 日本精品一区二区三区在线观看视频| 中文国产一区| 美女国产精品| 天堂精品久久久久| **爰片久久毛片| 国产精品亲子伦av一区二区三区| 日韩av一区二区三区四区| 国产精品v一区二区三区| 欧美日一区二区三区在线观看国产免| 91成人精品观看| 91成人精品在线| 精品视频一区二区三区在线观看|