weixin_42603074 2018-12-11 04:11 采纳率: 0%
浏览 1416

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

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

  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条回答 默认 最新

  • 星容月晓 2020-02-16 15:43
    关注

    o_c_data=cursor.callproc('p_sg_cq_accounts.accounts_实收', [o_out_data1, o_out_data2,o_out_data3,o_in_data1])
    print(o_out_data1.values[0].description[0][0])
    print(o_out_data1.values[0].description[1][0])
    print(o_out_data1.values[0].description[2][0])
    print(o_out_data1.values[0].description[3][0])

    o_out_data1 是输出的数据集,
    print 是输出的是 数据集的 列名字

    评论

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题