Re: [cx-oracle-users] looking for a quicker / more elegant way to form objects with attributes out
Brought to you by:
atuining
|
From: Amaury F. d'A. <ama...@gm...> - 2011-03-03 12:21:55
|
Hi,
2011/3/3 Massa, Harald Armin <ch...@gh...>:
> To be able to return an cx_Oracle result set as a "set of records"
> from a function (which is similiar to the "table returning functions"
> within Oracle), the columns of the record need to be attributes of an
> object. Actually I do:
I'd do it with a "row factory", here are two examples, one which
builds a dictionary, the other one builds a "named tuple" and is
very similar to sqlite3.Row.
def makeDictFactory(cursor):
columnNames = [d[0] for d in cursor.description]
def createRow(*args):
return dict(zip(columnNames, args))
return createRow
def makeNamedTupleFactory(cursor):
columnNames = [d[0].lower() for d in cursor.description]
import collections
Row = collections.namedtuple('Row', columnNames)
return Row
Then, just after the cs.execute() call, you can add:
cs.rowfactory = makeDictFactory(cs)
or
cs.rowfactory = makeNamedTupleFactory(cs)
--
Amaury Forgeot d'Arc
|