# !/usr/bin/env python utf - 8编码: #,cx_Oracle 用于访问甲骨文和导出数据 import cx_Oracle #,xlsxwriter 用于生成xlsx文件 import xlsxwriter import 时间 import 系统 #,导入邮件模块 得到email.mime.text import  MIMEText 得到email.mime.multipart import  MIMEMultipart import smtplib , 重载(系统) sys.setsys.setdefaultencodingdefaultencoding (“gbk”),,,,, #修改默认编码为“gbk”,解决中文编码问题,不进行设置会出现,UnicodeDecodeError:,“ascii”, codec 可以't decode byte 0 xa1 position 36:拷贝,ordinal not 拷贝射程(128) , 时间=con cx_Oracle.connect(“通讯/12345678 @orcl”) 时间=cursor con.cursor () , #定义SQL脚本,由于脚本包含中文,使用解码(utf - 8) .encode (“gbk”),对其进行转换 sql ="的 select count 收费金额, ,,,,locate 分中心 得到业务 “‘.decode (utf - 8) .encode (“gbk”) , 时间=query1 cursor.execute (sql),,, #执行查询 , title =,[我[0],for 小姐:拷贝query1.description] , date_now=time.strftime (“% Y % m % d”, time.localtime ()) , #文件名及其路径 , report_name='/excel/', +,“业务数据“.decode (utf - 8) .encode (gbk), +, date_now +,“.xlsx” , #生成xlsx格式甲骨文查询统计报表 , 时间=workbook xlsxwriter.Workbook (report_name, {“constant_memory”:真}) 时间=worksheet workbook.add_worksheet () print time.ctime () 时间=data cursor.fetchall () print time.ctime () worksheet.write_row(0, 0,标题) 行,for row_date 拷贝;列举(数据): ,,,worksheet.write_row(0, + 1行,还以为;row_date) print time.ctime () cursor.close () con.close () workbook.close () , #以下代码实现发送邮件 , 时间=msg MIMEMultipart () , #定义附件名 , “.decode att1_name="业务数据(utf - 8) .encode (gbk), +, date_now +,“.xlsx”, , #读入附件,report_name ,=att1 MIMEText(开放(report_name, rb) .read (),“base64”,“gb2312”) att1(“内容类型”),=,“应用程序/八进制” att1(“附加”),=,=% s p_w_upload;,文件名的,%,att1_name.encode (“gbk”) msg.attach (att1) , 味精(','],=,“boss@126.com” 味精(“的”),=,“report@126.com” 味精(“主题”),=,“每周业务数据“.decode (utf - 8) .encode (“gbk”) 试一试: ,,,server =, smtplib.SMTP () ,,,server.connect (“mail.126.com”) ,,,server.login (“report@126.com”、“12345678”) # ,,,server.sendmail(味精['从'],味精(','],msg.as_string ()) ,,,server.quit () ,,,print “成功”。 例外,except e: ,,,print str (e)