您的位置:首页 > 数据库 > Oracle

python连接oracle导出excel

2018-02-05 11:20 627 查看

起因

最近工作中发现的一个不便利的地方,就是自己维护的系统每个月需要整理出相关的月报,而月报中的数据则是根据去生产环境的oracle去查询对应sql而来的,将这些数据每次查询后在整理到一个excel中,前两次属于熟悉流程阶段,后来觉得有些浪费时间,所以决定用python自动化下此步骤,记录下一个demo。

依赖环境

python3

cx_Oracle

openpyxl

编码demo

cx_Oracle 专门连接Oracle的库,在之前的文章也有写过。
openpyxl 此库可以与excel后缀名为xlsx的进行交互操作,在之前的文章也有写过。


#coding=utf-8
import cx_Oracle
from openpyxl import Workbook

#连接oracle,读取数据
def link_Oracle(wb):

create_wb(wb,'helloDatas.xlsx')
ws = wb.create_sheet(title='我是第一个title',index=0)
#用户名、密码、"ip/库名"
connection = cx_Oracle.connect("username","password","192.168.1.2/test")
cursor = connection.cursor()
sql = '''
select t.name,t.age from student t
'''
cursor.execute(sql)
#row = cursor.fetchone()
#print(row)
list_A_B = []
#遍历游标
rowcount=1
for a in cursor:
rowcount = rowcount + 1
list_A_B.append(a)

#读取表字段值
db_title = [i[0] for i in cursor.description]
#遍历表字段值
for titleNum in range(len(db_title)):
A = ws.cell(row=1,column=1)
B = ws.cell(row=1,column=2)
A.value = db_title[titleNum]
B.value = db_title[titleNum]
#读取数据到excel
for rowNum in range(1,rowcount):
A = ws.cell(row=rowNum,column=1)
B = ws.cell(row=rowNum,column=2)
#list_A_B索引从0开始,所以-1,list中存的是tuple,后面[0]获取的是tuple中的对应元素
A.value = list_A_B[rowNum-1][0]
B.value = list_A_B[rowNum-1][1]

cursor.close()
connection.close()
wb.save('helloDatas.xlsx')
#创建Excel
def create_wb(wb,filename):
wb.save(filename=filename)
print ("新建Excel:"+filename+"成功")

if __name__ == '__main__':
wb = Workbook()
link_Oracle(wb)


结语

编码大概就是上面这个样子,具体实现起来很简单。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: