您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

cx_Oracle:如何将每一行作为字典接收?

cx_Oracle:如何将每一行作为字典接收?

您可以覆盖游标的rowfactory方法。每次执行查询时,都需要执行此操作。

这是标准查询元组)的结果。

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

返回一个命名的元组

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

返回字典:

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}
@H_404_9@

感谢Amaury Forgeot d’Arc:http//sourceforge.net/p/cx- oracle/mailman/message/27145597

解决方法

默认情况下,cx_Oracle将每行作为一个元组返回。

>>> import cx_Oracle
>>> conn=cx_Oracle.connect('scott/tiger')
>>> curs=conn.cursor()
>>> 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')
@H_404_9@

返回字典:

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}
@H_404_9@

感谢Amaury Forgeot d’Arc:http//sourceforge.net/p/cx- oracle/mailman/message/27145597

解决方法

默认情况下,cx_Oracle将每行作为一个元组返回。

>>> import cx_Oracle
>>> conn=cx_Oracle.connect('scott/tiger')
>>> curs=conn.cursor()
>>> curs.execute("select * from foo");
>>> curs.fetchone()
(33,'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}
@H_404_9@

感谢Amaury Forgeot d’Arc:http//sourceforge.net/p/cx- oracle/mailman/message/27145597

解决方法

默认情况下,cx_Oracle将每行作为一个元组返回。

>>> import cx_Oracle
>>> conn=cx_Oracle.connect('scott/tiger')
>>> curs=conn.cursor()
>>> curs.execute("select * from foo");
>>> curs.fetchone()
(33,'blue')

如何将每一行作为字典返回?

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
>>> import cx_Oracle
>>> conn=cx_Oracle.connect('scott/tiger')
>>> curs=conn.cursor()
>>> curs.execute("select * from foo");
>>> curs.fetchone()
(33,'blue')

返回一个命名的元组

返回字典:

感谢Amaury Forgeot d’Arc:http//sourceforge.net/p/cx- oracle/mailman/message/27145597

默认情况下,cx_Oracle将每行作为一个元组返回。

如何将每一行作为字典返回?

返回一个命名的元组

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

返回字典:

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}
@H_404_9@

感谢Amaury Forgeot d’Arc:http//sourceforge.net/p/cx- oracle/mailman/message/27145597

解决方法

默认情况下,cx_Oracle将每行作为一个元组返回。

>>> import cx_Oracle
>>> conn=cx_Oracle.connect('scott/tiger')
>>> curs=conn.cursor()
>>> curs.execute("select * from foo");
>>> curs.fetchone()
(33,'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}
@H_404_9@

感谢Amaury Forgeot d’Arc:http//sourceforge.net/p/cx- oracle/mailman/message/27145597

解决方法

默认情况下,cx_Oracle将每行作为一个元组返回。

>>> import cx_Oracle
>>> conn=cx_Oracle.connect('scott/tiger')
>>> curs=conn.cursor()
>>> curs.execute("select * from foo");
>>> curs.fetchone()
(33,'blue')

如何将每一行作为字典返回?

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
>>> import cx_Oracle
>>> conn=cx_Oracle.connect('scott/tiger')
>>> curs=conn.cursor()
>>> curs.execute("select * from foo");
>>> curs.fetchone()
(33,'blue')

返回字典:

感谢Amaury Forgeot d’Arc:http//sourceforge.net/p/cx- oracle/mailman/message/27145597

默认情况下,cx_Oracle将每行作为一个元组返回。

如何将每一行作为字典返回?

返回字典:

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}
@H_404_9@

感谢Amaury Forgeot d’Arc:http//sourceforge.net/p/cx- oracle/mailman/message/27145597

解决方法

默认情况下,cx_Oracle将每行作为一个元组返回。

>>> import cx_Oracle
>>> conn=cx_Oracle.connect('scott/tiger')
>>> curs=conn.cursor()
>>> curs.execute("select * from foo");
>>> curs.fetchone()
(33,'blue')

如何将每一行作为字典返回?

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
>>> import cx_Oracle
>>> conn=cx_Oracle.connect('scott/tiger')
>>> curs=conn.cursor()
>>> curs.execute("select * from foo");
>>> curs.fetchone()
(33,'blue')

感谢Amaury Forgeot d’Arc:http//sourceforge.net/p/cx- oracle/mailman/message/27145597

默认情况下,cx_Oracle将每行作为一个元组返回。

如何将每一行作为字典返回?

感谢Amaury Forgeot d’Arc:http//sourceforge.net/p/cx- oracle/mailman/message/27145597

Oracle 2022/1/1 18:33:50 有452人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶