gpt4 book ai didi

python - 从python调用存储过程时获取列名和数据

转载 作者:太空宇宙 更新时间:2023-11-04 00:19:46 25 4
gpt4 key购买 nike

我正在使用 cx_Oracle 包从 python 调用 PL/SQL 存储过程。 PL/SQL 存储过程返回一个 SYS_REFCURSOR 作为 OUT 参数。我能够获取 REF_CURSOR 的值,但无法获取列的名称和值。

PFB 我的代码

result_set = self.__cursor__.callproc(call_procedure, parameters)    
result_set[index].fetchall()

fetchall() 只返回数组中的值,如

[
"John",
"B",
"Doe",
"111223333",
"Fri, 09 May 1997 00:00:00 GMT",
"212 Main St, Orlando, FL",
"M",
25000,
"333445555"
]

但是我想要这样的东西

{
"FirstName": "John",
"MInit": "B",
"LastName": "Doe",
"SSN": "111223333",
"DOE": "Fri, 09 May 1997 00:00:00 GMT",
"Addr": "212 Main St, Orlando, FL",
"Sex": "M",
"Sal": 25000,
"DNO": "333445555"
}

最佳答案

您可以从 cursor.description 中获取所有列名并使用 zip() 函数构造字典列表:

# prepare cursor and execute procedure
conn = ...
cursor = conn.cursor()
cursor.callproc(...)

# get only column names from cursor description
column_names_list = [x[0] for x in cursor.description]

# construct a list of dict objects (<one table row>=<one dict>)
result_dicts = [dict(zip(column_names_list, row)) for row in cursor.fetchall()]

也应该对 SELECT 语句有效。

关于python - 从python调用存储过程时获取列名和数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49601005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com