Oracle
 sql >> Baza danych >  >> RDS >> Oracle

cx_Oracle:Jak mogę otrzymać każdy wiersz jako słownik?

Możesz zastąpić rowfactory kursora metoda. Musisz to zrobić za każdym razem, gdy wykonujesz zapytanie.

Oto wyniki standardowego zapytania, krotki.

curs.execute('select * from foo')
curs.fetchone()
    (33, 'blue')

Zwracanie nazwanej krotki:

def makeNamedTupleFactory(cursor):
    columnNames = [d[0].lower() for d in cursor.description]
    import collections
    Row = collections.namedtuple('Row', columnNames)
    return Row

curs.rowfactory = makeNamedTupleFactory(curs)
curs.fetchone()
    Row(x=33, y='blue')

Zwracanie słownika:

def makeDictFactory(cursor):
    columnNames = [d[0] for d in cursor.description]
    def createRow(*args):
        return dict(zip(columnNames, args))
    return createRow

curs.rowfactory = makeDictFactory(curs)
curs.fetchone()
    {'Y': 'brown', 'X': 1}

Kredyt dla Amaury Forgeot d'Arc:http://sourceforge.net/p/cx-oracle/mailman/message/27145597



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL ROWNUM jak zwrócić wiersze między określonym zakresem

  2. Jak obsłużyć kolumnę tabeli nazwaną zarezerwowanym słowem kluczowym Sql?

  3. Wyjaśnienie operatora Oracle MINUS

  4. Zaktualizuj wiersze w jednej tabeli danymi z innej tabeli na podstawie jednej kolumny w każdej równej

  5. Dlaczego w SQL NULL nie może się równać z NULL?