You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python cx_Oracle代码将查询结果集转为字典?

嘿,这个需求很常见,我来帮你调整代码,让fetch_data_from_db返回字典类型的结果~

解决方案

要实现返回字典类型的结果,核心是把查询结果的列名和每行的数值一一对应起来。cx_Oracle的游标提供了description属性,可以轻松获取查询结果的列信息,我们基于这个来做转换。

修改后的完整代码

import cx_Oracle
class OracleDBConnection(object):
    def connect_oracle_db(self,connectionstring):
        con=None
        try:
            con = cx_Oracle.connect(connectionstring)
            return con
        except Exception as e:
            print(str(e.args))
            print(str(e))
            return str(e)
        #print con.version

    def fetch_data_from_db(self,con, query):
        curs = con.cursor()
        curs.execute(query)
        # 1. 提取查询结果的所有列名
        column_names = [desc[0] for desc in curs.description]
        res = curs.fetchall()
        # 2. 将每行元组转换成字典,最终返回字典列表
        return [dict(zip(column_names, row)) for row in res]

关键修改点说明

  • 获取列名:curs.description返回一个元组列表,每个元组的第一个元素就是对应列的名称,我们用列表推导式提取出所有列名。
  • 转换为字典:用zip(column_names, row)把列名和每行的数值一一配对,再通过dict()转换成字典,最后用列表推导式把所有行都处理成字典,组成列表返回。

这样调用fetch_data_from_db后,你得到的会是一个包含字典的列表,每个字典的键是数据库列名,值是对应行的数据,使用起来会比元组直观很多。

内容的提问来源于stack exchange,提问作者JCDani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:17:11