2009-06-05 15 views
6

Sto lavorando su un gestore per il modulo di registrazione python. Questo essenzialmente si registra in un database Oracle.Ottenere informazioni sulla colonna in cx_oracle quando la tabella è vuota?

Sto usando cx_oracle e qualcosa che non so come ottenere è il valore della colonna quando la tabella è vuota.

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 

L'output è:

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]> 

Ora guardando i dati var posso vedere i tipi di dati, e le loro dimensioni (conta Nones?) Ma questo manca il nome della colonna.

Come posso andare su questo?

risposta

13

Penso che l'attributo description potrebbe essere quello che stai cercando. Questo restituisce un elenco di tuple che descrivono le colonne dei dati restituiti. Funziona abbastanza felicemente se non ci sono righe restituite, ad esempio:

 
>>> 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 [email protected]>> 
>>> cr.description 
[('DUMMY', <type 'cx_Oracle.STRING'>, 1, 1, 0, 0, 1)] 
Problemi correlati