Используя cx_Oracle для вызова простой хранимой процедуры, я могу легко получить данные из процедуры следующим образом:
db = db_class() #Sets up stuff, etc.
conn = db.connect() #Returns a connection to the database
cursor = conn.cursor()
l_results = cursor.var(cx_Oracle.CURSOR)
res = cursor.callproc("PROG.DATA.GET_EVENTS", [1,2,l_results])
#params = siteID, userID, ref cursor
res[2]
в конечном итоге является неким перечислимым типом, который я легко могу перебрать, какИтак:
data = [row for row in res[2]]
Я получаю список списков / кортежей, который дает мне значения, но мне также нужны имена столбцов.Я пробовал следующее:
cols = cursor.description if cursor.description is not None else [] #Returns None
cols = res[2].description if res[2].description is not None else []
#Returns an error. Same if l_results is used instead
Как мне получить имена столбцов из l_results?Я определил, что l_results - это объект Variable, а не курсор, поэтому он не будет работать.То же самое с res [2].Но я просто не могу получить столбцы из curs.
curs.description после того, как это выглядит как значение None, когда оно должно быть списком из 7 элементов
Что вМир, я пропустил?
РЕДАКТИРОВАТЬ 1: я пытался изменить его с callproc
на следующее.Та же проблема.
res = cursor.execute("BEGIN PROG.DATA.GET_EVENTS(:1,:2,:3); END;", {"1": 1,"2": 2,"3":, l_results})
cols = cursor.description #Returns None, again.
Вызов возвращает данные, поэтому я не уверен, почему description
не устанавливается.