调用数据库中包中的一个过程,过程头如下:
PROCEDURE RAITO(RETURNDS OUT REDATASET.DS,
其余IN参数
) AS
然后在Python中想用DataFrame格式显现出来,搞了半天,代码如下:
import cx_Oracle
import pandas as pd
conn = cx_Oracle.connect('mycredit/CREDIT12345@PICC_shengchan')
cur = conn.cursor()
i_cur = cur.var(cx_Oracle.CURSOR)
zz = cur.callproc("RAITO",[i_cur, '其余IN参数'])
rs = pd.DataFrame(zz)
result = []
for i in range(len(rs.T)):
result.append(rs[i][0])
rs2 = pd.DataFrame(result)
print (rs2)
有两个问题问下各位大佬:
1. ORACLE中RETURNDS(既有结果的游标)已经传入了I_CUR,各位可以看到我先把结果放到list中,再通过循环得到了上述结果,有没有比较方便的方法可以直接通过I_CUR得到结果?
2. 平常在用游标的时候我都会通过如下方法得到列名:
columnnames = []
for field in cursor.description:
columnnames.append(field[0])
可是我在上面的列子中用如下代码的时候,就会出现错误:
print(i_cur.description)
AttributeError: 'cx_Oracle.CURSOR' object has no attribute 'description'
如果是这样的话,我怎么能取到数据库游标中的列名呢?(既RETURNDS游标中的列名)