Obtendo informações da coluna em cx_Oracle quando a tabela está vazia?
Pergunta
Eu estou trabalhando em um manipulador de um para o módulo de registro Python. Que registra essencialmente a um banco de dados Oracle.
Eu estou usando cx_Oracle, e algo que eu não sei como começar é os valores da coluna quando a tabela está vazia.
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
A saída é:
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]>
Agora, olhando para os dados var i pode ver os tipos de dados, e seus tamanhos (nones contagem?), Mas isso é faltar o nome da coluna.
Como posso fazer isso?
Solução
Eu acho que o atributo description
pode ser o que você está procurando. Isso retorna uma lista de tuplas que descrevem as colunas dos dados retornados. Ele funciona completamente feliz se não houver linhas retornadas, por exemplo:
>>> 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)]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow