2009-06-05 17 views
6

Pracuję nad modułem obsługi modułu rejestrującego Pythona. To zasadniczo loguje się do bazy danych Oracle.Uzyskiwanie informacji o kolumnie w cx_oracle, gdy tabela jest pusta?

Używam cx_oracle, a coś, czego nie wiem, jak uzyskać, to wartości kolumn, gdy tabela jest pusta.

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 

Wyjście jest:

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

Teraz patrząc na dane var widzę typy danych, a ich rozmiary (liczyć Nones?), Ale to brakuje nazwę kolumny.

Jak mogę to zrobić?

Odpowiedz

13

Myślę, że atrybut description może być tym, czego szukasz. Zwraca to listę krotek, które opisują kolumny zwróconych danych. Działa całkiem szczęśliwie, jeśli nie ma zwróconych wierszy, na przykład:

 
>>> 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)] 
Powiązane problemy