6 Stimmen

Abrufen von Spalteninformationen in cx_oracle, wenn die Tabelle leer ist?

Ich arbeite an einem Handler für das Python-Logging-Modul. Das loggt im Wesentlichen zu einer Oracle-Datenbank.

Ich verwende cx_oracle, und etwas, das ich nicht weiß, wie man die Spaltenwerte erhält, wenn die Tabelle leer ist.

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

Die Ausgabe ist:

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

Jetzt Blick auf die var-Daten kann ich die Datentypen sehen, und ihre Größen (count nones?) aber das fehlt der Spaltenname.

Wie kann ich das angehen?

14voto

Luke Woodward Punkte 59973

Ich denke, die description könnte das sein, wonach Sie suchen. Dieses gibt eine Liste von Tupeln zurück, die die Spalten der zurückgegebenen Daten beschreiben. Es funktioniert gut, wenn zum Beispiel keine Zeilen zurückgegeben werden:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X