作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
默认情况下,cx_Oracle 将每一行作为元组返回。
>>> import cx_Oracle
>>> conn=cx_Oracle.connect('scott/tiger')
>>> curs=conn.cursor()
>>> curs.execute("select * from foo");
>>> curs.fetchone()
(33, 'blue')
如何将每一行作为字典返回?
最佳答案
您可以覆盖游标的 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
关于python - cx_Oracle : How can I receive each row as a dictionary?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35045879/
我是一名优秀的程序员,十分优秀!