Domanda

Sto lavorando su un un gestore per il modulo di registrazione pitone. Che registra essenzialmente a un database Oracle.

Sto usando cx_Oracle, e qualcosa che io non so come ottenere è i valori 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?

È stato utile?

Soluzione

Credo che l'attributo description può essere cosa stai cercando. Questo restituisce una lista 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 username@local>>
>>> cr.description
[('DUMMY', <type 'cx_Oracle.STRING'>, 1, 1, 0, 0, 1)]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top