weixin_42603074
weixin_42603074
2018-12-11 04:11

Python通过cx_Oracle调用过程,过程中的OUT游标怎么在Python中打开?怎么把游标中的列名提取出来?

  • python
  • oracle

调用数据库中包中的一个过程,过程头如下:

  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游标中的列名)

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

1条回答