Oracle
 sql >> база данни >  >> RDS >> Oracle

cx_Oracle:Как мога да получа всеки ред като речник?

Можете да замените rowfactory на курсора метод. Ще трябва да правите това всеки път, когато изпълнявате заявката.

Ето резултатите от стандартната заявка, кортеж.

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

Връщане на именуван кортеж:

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')

Връщане на речник:

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}

Кредит на 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 Oracle LEFT JOIN и SUBQUERY:ORA-00905:липсва ключова дума

  2. KGXGN грешка при анкетиране (15)

  3. Как да криптирате данни в Oracle с помощта на PL SQL

  4. Изпълняване на 2 заявки едновременно на Oracle SQL Developer?

  5. Обръщане на данни с помощта на две колони