环境:Linux +python2.7+oracle11g

1、提前安装xlwt(excel写入操作模块),cx_Oracle(oracle操作模块)

cx_Oracle的安装步骤详见链接:https://segmentfault.com/a/1190000009878547

2、脚本如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import os
reload(sys)
sys.setdefaultencoding('utf8')
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
import cx_Oracle
import xlwt
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 filename = 'report_'+time.strftime("%Y-%m-%d")+'.xls'
out_path = '/data/shell/report_'+time.strftime("%Y-%m-%d")+'.xls'
print(out_path) sheet01 = 'report'+time.strftime("%Y-%m-%d")
#获取发布时间与系统时间为同一个月的数据
sql01="select * from xxxxx where to_char(publish_time,'yyyy-mm-dd')=to_char(sysdate, 'yyyy-mm-dd'); " workbook = xlwt.Workbook(encoding = 'utf-8') # workbook是sheet赖以生存的载体。
def main(sql,sheet,sheet_name):
conn = cx_Oracle.connect("user/passwd@ip/sid")
cursor =conn.cursor()
result = cursor.execute(sql) #搜取所有结果
results = cursor.fetchall()
# 获取MYSQL里面的数据字段名称
fields = cursor.description
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) _user = "xxx@qq.com"
_pwd = "passwd"
areceiver = "xxx@qq.com" #收件人员
acc = "xxx@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():
#---这是文字部分---
content = '''Deal all,\n附件是数'''
part = MIMEText(content,'plain','utf-8')
msg.attach(part)
#---这是附件部分---
#xls类型附件
file_name = '/data/shell/' + 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.qq.com", timeout=30)#连接smtp邮件服务器,端口默认是25
s.login(_user, _pwd)#登陆服务器
s.sendmail(_user, areceiver.split(',') + acc.split(','), msg.as_string())#发送邮件
print("Email send successfully")
s.close() if __name__ == '__main__':
main(sql01,sheet01,sheet01)
send_email()

  

Oracle获取当月或上个月、下个月
add_months()函数 参数 负数 代表 往前 正数 代表 往后。 --当月
select to_char(sysdate,'yyyymm') from dual;
--上一个月
select to_char(add_months(trunc(sysdate),-1),'yyyymm') from dual;
--下一个月
select to_char(add_months(trunc(sysdate),1),'yyyymm') from dual;

  

相关链接:https://blog.csdn.net/u013519551/article/details/46632537

https://blog.csdn.net/mindmb/article/details/7898528

     https://blog.csdn.net/my2010sam/article/details/21005941

[Python]查询oracle导出结果至Excel并发送邮件的更多相关文章

  1. [Python]查询mysql导出结果至Excel并发送邮件

    环境:Linux +python2.7+mysql5.6 1.提前安装xlwt(excel写入操作模块),MySQLdb(mysql操作模块) 2.脚本如下: #!/usr/bin/python #c ...

  2. [ES]Python查询ES导出数据为Excel

    版本 elasticsearch==5.5.0 python==3.7 说明 用python查询es上存储的状态数据,将查询到的数据用pandas处理成excel code # -*- coding: ...

  3. python连接oracle导出数据文件

    python连接oracle,感觉table_list文件内的表名,来卸载数据文件 主脚本: import os import logging import sys import configpars ...

  4. python将oracle数据库保存到excel

    上代码: import pandas as pd import SqlHelper.ORACLE as ORA if __name__ == '__main__': #连接数据库 ms = ORA.O ...

  5. 20170506计划-----(基于python查询oracle语句)

    在日常的工作中,经常接到开发同事查询生产SQL的请求,公司又不允许对开发开放查询SQL的权限,并且查询的堡垒机又很慢,计划做一个可以自动查询SQL的小工具,一周内完成吧. 大概功能实现了,一些涉及敏感 ...

  6. 使用python脚本从数据库导出数据到excel

    python从数据库导出数据到excel 最近需要从数据库里导出一些数据到excel,刚开始我是使用下面的命令 select * from xxx where xxx into outfile 'xx ...

  7. Python连接Oracle数据查询导出结果

    python连接oracle,需用用到模块cx_oracle,可以直接pip安装,如网络不好,可下载离线后本地安装 cx_oracle项目地址:https://pypi.org/project/cx_ ...

  8. Python实战 :2017国考职业表excel转数据库,再查询生成excel

    最近看2017年国考的职业表,多而杂,不好过滤我想要的信息,特此把它转成Sqlite3数据库,再从数据库里把查询结果导出成excel,方便找职业. (后附上整套代码) 环境:python2.7   x ...

  9. 如何使用python将MySQL中的查询结果导出为Excel----xlwt的使用

    如何在MySQL中执行的一条查询语句结果导出为Excel? 一.可选方法 1.使用sql yog等远程登录,执行查询语句并导出结果集为Excel 适用于较简单的查询结果集的导出 如果需要多个SQL语句 ...

随机推荐

  1. oracle开发错误

    先展示一个错误写法 public static String printGg_bysly0List() {// 外网 TransManager tm = new TransManager(); try ...

  2. java面向对象编程(三)--this

    看一段代码:(Demo112.java),先了解为什么要使用this. /* this的必要性 */ public class Demo112{ public static void main(Str ...

  3. grep语法2

    grep 参数 -n  :显示行号-o  :只显示匹配的内容-q  :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容 -l  :如果匹配成功,则只将文件名打印出来,失败则 ...

  4. <a>链接添加样式问题

    <a>链接是内联元素,必须设置成块元素block,才能有 width 和 height,不过你可以又定义display:block再定义成 display:inline 这样可以避免在IE ...

  5. css自定义checkbox和radio样式

    很常见的问题,也有许多人写过类似的文章,自己写来记录下 css代码如下: #myCheck + label,.myRadio + label{ width:16px; height:16px; bor ...

  6. Linux系统安装管理

    将lfs linux liveCD的内容copy安装到硬盘 先将98.ima(dos启动软盘镜像文件)用ultraISO写入到u盘(usbhdd+), 不必勾选“创建启动分区”. 将liveCD和内核 ...

  7. Go语言开发Windows应用

    Go语言开发Windows应用 当第一次看到Go程序在windows平台生成可执行的exe文件,就宣告了windows应用也一定是Go语言的战场.Go不是脚本语言,但却有着脚本语言的轻便简单的特性.相 ...

  8. Guava 3: 集合Collections

    一.引子 Guava 对JDK集合的拓展,是最成熟且最受欢迎的部分.本文属于Guava的核心,需要仔细看. 二.Guava 集合 2.1 Immutable Collections不可变集合 1.作用 ...

  9. Feign中使用hystrix

    Feign中使用hystrix 一.在Order工程中的bootstrap.yml中增加配置 feign: hystrix: enabled: true

  10. Hadoop与MPP是什么关系?有什么区别和联系?

    HADOOP与MPP是什么关系?有什么区别和联系? 适用范围.应用领域分别是什么? 其实MPP架构的关系型数据库与Hadoop的理论基础是极其相似的,都是将运算分布到节点中独立运算后进行结果合并.个人 ...