python连接Oracle查询数据保存到excel中

import cx_Oracle
import xlwt


def MakeExcel(table_namess):
    table_names = table_namess.split(".", 1)
    table_name = str(table_names[1])
    ower = str(table_names[0])
    print(table_name, ower)
    workbook = xlwt.Workbook()
    worksheet = workbook.add_sheet('Input', 'w+b')
    worksheet1 = workbook.add_sheet('BaseLine', 'w+b')
    worksheet2 = workbook.add_sheet('OutPut', 'w+b')
    worksheet3 = workbook.add_sheet('Result', 'w+b')
    conn = cx_Oracle.connect('username/username@127.0.0.1:1521/ORCL')
    cursor = conn.cursor()
    cursor1 = conn.cursor()

    sql = "SELECT column_name,data_type,data_length, table_name FROM " \
          "all_tab_columns where owner='%s' and table_name = '%s'" % (ower, table_name)
    sql1 = "SELECT column_name||'@'||data_type||'@'||data_length, table_name FROM " \
           "all_tab_columns where owner='SCOTT' and table_name = '%s'" % table_name
    result = cursor.execute(sql)
    result1 = cursor1.execute(sql1)
    data = cursor.fetchall()
    data1 = cursor1.fetchall()
    nr = len(data)  # 数据多少行循环写入
    print(data)
    # 获取字段名
    title = [i[0] for i in result.description]
    title1 = [i[0] for i in result1.description]
    # title2 = [table_name+'表中的字段名称']
    # title3 = [table_name]
    # title = title1+title2+title3
    print(title)
    for c in range(len(title)):
        worksheet.write(0, c, title[c])
    for r in range(nr):
        for c in range(len(data[r])):
            if data[r][c]:  # 值不为空时写入,空值不写入
                worksheet.write(r + 1, c, data[r][c]) 
        worksheet.write(r + 1, 4, 'Contain')
        worksheet.write(r + 1, 5, table_name + '表中的字段' + data[r][0])
    for c in range(len(title1)):
        worksheet1.write(0, c, title1[c])
    for r in range(nr):
        for c in range(len(data1[r])):
            if data1[r][c]:  # 值不为空时写入,空值不写入
                worksheet1.write(r + 1, c, data1[r][c]) 
        worksheet1.write(r + 1, 4, 'Contain')
    workbook.save("E:\PythonExcel\%s.xls" % table_namess)

    conn.close()

# MakeExcel("scott.dept")
table_namesss = ['SCOTT.DEPT', 'SCOTT.EMP', 'SCOTT.SALGRADE']
for table_namess in (table_namesss):
    MakeExcel(table_namess)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值