python连接oracle导出excel

起因

最近工作中发现的一个不便利的地方,就是自己维护的系统每个月需要整理出相关的月报,而月报中的数据则是根据去生产环境的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 i,description in enumerate(db_title):
        ws.cell(row=1, column = 1 + i).value = description

    #读取数据到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)

结语

编码大概就是上面这个样子,具体实现起来很简单。

你可能感兴趣的:(----Python)