cx_oracle执行多条语句并导出数据到excel

cx_oracle execute multiple statements and export data to excel

目前我可以使用以下代码从 excel、运行 获取查询并将结果导出到另一个 excel。但是,我无法设置一个循环来获取“查询”列中的所有值并将它们全部 运行 ,并将结果保存在结果中而不覆盖第一个查询的结果。所以我需要使用 temp1 从“查询”

中获取第一个值
dsn_tns = cx_Oracle.makedsn('xxxxxxxxxx', service_name='xxxxxx') # if needed, place an 'r' before any parameter in order to address special characters such as '\'.
conn = cx_Oracle.connect(user=r'xxxxxxx', password='xxxxxx', dsn=dsn_tns)
excel_data_df = pandas.read_excel('C:\Python\Excel\sqlinput.xlsx', sheet_name='Sheet2')

sql1 = list(excel_data_df['Query'])
temp1=(sql1[1])
cur = conn.cursor()
cur.execute(temp1)
res1 = cur.fetchall()
res1=pd.DataFrame(res1)
writer=pd.ExcelWriter('C:\Python\Excel\output.xlsx')
writer.save()

我会做这样的事情

dsn_tns = cx_Oracle.makedsn('xxxxxxxxxx', service_name='xxxxxx') # if needed, place an 'r' before any parameter in order to address special characters such as '\'.
conn = cx_Oracle.connect(user=r'xxxxxxx', password='xxxxxx', dsn=dsn_tns)
excel_data_df = pandas.read_excel('C:\Python\Excel\sqlinput.xlsx', sheet_name='Sheet2')

sql1 = list(excel_data_df['Query'])
i=0 
while i < len(sql1)
    temp1=(sql1[i])
    cur = conn.cursor()
    cur.execute(temp1)
    res1 = cur.fetchall()
    res1=pd.DataFrame(res1)
    writer=pd.ExcelWriter('C:\Python\Excel\output.xlsx')
    writer.save()
    i += 1

这是我的例子

import cx_Oracle
import pandas
import xlrd 

connection = cx_Oracle.connect('myuser', 'mypassword', "mydns:myport/myservicename" , encoding= 'UTF-8' )
excel_data_df = pandas.read_excel('C:\python\myqueries.xlsx', sheet_name='queries')

print(excel_data_df.columns.ravel())
print(excel_data_df['COLUM_QUERY'].tolist())
print(excel_data_df['ENABLE'].tolist())

sql = excel_data_df['COLUM_QUERY'].tolist()

i = 0
while i < len(sql):
    cursor = connection.cursor()
    stmn = (sql[i])
    print(stmn)
    cursor.execute(stmn)
    while True:
        row = cursor.fetchone()
        if row is None:
            break
        print(row)
    i += 1

运行 我的例子,其中的查询都是一样的

执行以下操作

C:\python>python mypython.py
['COLUM_QUERY' 'ENABLE']
['select 1,2 from dual', 'select 1,2 from dual', 'select 1,2 from dual']
[1, 1, 0]
 select 1,2 from dual
(1, 2)
 select 1,2 from dual
(1, 2)
 select 1,2 from dual
(1, 2)
select 1,2 from dual
(1, 2)
select 1,2 from dual
(1, 2)
select 1,2 from dual
(1, 2)

C:\python>