sql >> Databasteknik >  >> RDS >> Oracle

cx_Oracle:Hur kan jag ta emot varje rad som en ordbok?

Du kan åsidosätta markörens rowfactory metod. Du måste göra detta varje gång du utför frågan.

Här är resultatet av standardfrågan, en tuppel.

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

Returnera en namngiven tuppel:

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

Returnera en ordbok:

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}

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



  1. Konfigurera Master-Master MySQL-databasreplikering

  2. Få närmaste longitud och latitud från MSSQL-databastabellen?

  3. Sammanfoga resultat från en SQL-fråga i Oracle

  4. Är det möjligt att ha en indexerad vy i MySQL?