我使用cx_Oracle包从python调用PL / SQL存储过程。 PL / SQL存储过程返回SYS_REFCURSOR作为OUT参数。我能够获得REF_CURSOR的值,但是我无法获得列的名称以及值。
PFB我的代码
@Controller
fetchall()仅返回数组中的值,如
result_set = self.__cursor__.callproc(call_procedure, parameters)
result_set[index].fetchall()
但我想要这样的东西
[
"John",
"B",
"Doe",
"111223333",
"Fri, 09 May 1997 00:00:00 GMT",
"212 Main St, Orlando, FL",
"M",
25000,
"333445555"
]
答案 0 :(得分:3)
您可以从cursor.description
获取所有列名,并使用zip()
函数构建一个dicts列表:
# 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
陈述上有效。