Bạn có thể ghi đè rowfactory
của con trỏ phương pháp. Bạn sẽ cần thực hiện việc này mỗi khi thực hiện truy vấn.
Đây là kết quả của truy vấn chuẩn, một bộ.
curs.execute('select * from foo')
curs.fetchone()
(33, 'blue')
Trả lại một tuple đã đặt tên:
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')
Trả lại từ điển:
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}
Tín dụng cho Amaury Forgeot d'Arc:http://sourceforge.net/p/cx-oracle/mailman/message/27145597