Получение информации о столбце в cx_oracle, когда таблица пуста? - PullRequest
6 голосов
/ 05 июня 2009

Я работаю над обработчиком для модуля регистрации Python. По сути, это входит в базу данных оракула.

Я использую cx_oracle, и что-то, что я не знаю, как получить, - это значения столбца, когда таблица пуста.

cursor.execute('select * from FOO')
for row in cursor:
    # this is never executed because cursor has no rows
    print '%s\n' % row.description

# This prints none
row = cursor.fetchone()
print str(row)

row = cursor.fetchvars
# prints useful info
for each in row:
    print each

Вывод:

None
<cx_Oracle.DATETIME with value [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None
, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None
, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]>
<cx_Oracle.STRING with value [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None,
None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None,
None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]>

Теперь, глядя на данные var, я вижу типы данных и их размеры (считайте nones?), Но в них отсутствует имя столбца.

Как мне это сделать?

1 Ответ

13 голосов
/ 05 июня 2009

Я думаю, атрибут description может быть тем, что вы ищете. Это возвращает список кортежей, которые описывают столбцы возвращаемых данных. Хорошо работает, если не возвращено ни одной строки, например:

>>> import cx_Oracle
>>> c = cx_Oracle.connect("username", "password")
>>> cr = c.cursor()
>>> cr.execute("select * from dual where 1=0")
<__builtin__.OracleCursor on <cx_Oracle.Connection to user username@local>>
>>> cr.description
[('DUMMY', <type 'cx_Oracle.STRING'>, 1, 1, 0, 0, 1)]
...