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

cx_Oracle执行查询未返回结果,仅输出查询语句问题咨询

问题分析与解决步骤

你的代码主要有三个问题导致无法获取查询结果:

  • 遗漏结果提取步骤:执行SELECT语句后,游标只是持有了结果集,但你没有调用方法把数据取出来
  • 多余的提交操作:SELECT查询不需要执行Connection.commit(),这个操作仅针对插入/更新/删除这类修改数据的语句
  • 打印对象错误:你最后打印的是SQL语句变量query,而非从游标中提取的实际结果

修正后的代码示例

Connection = cx_Oracle.connect(user=username, password=password, dsn=dsn, encoding=enc)

query = 'SELECT RECV_MBR_ID FROM your_table'  # 替换为实际表名

cursor = Connection.cursor()
cursor.execute(query)
# 提取所有查询结果
results = cursor.fetchall()
# 遍历打印ID列表
for row in results:
    print(row[0])  # row[0]对应查询的第一个字段RECV_MBR_ID

cursor.close()
Connection.close()  # 务必关闭数据库连接

额外优化建议

如果查询结果数据量较大,建议用游标迭代的方式分批获取,避免一次性加载大量数据占用内存:

with cx_Oracle.connect(user=username, password=password, dsn=dsn, encoding=enc) as Connection:
    with Connection.cursor() as cursor:
        cursor.execute(query)
        # 直接遍历游标,逐行获取结果
        for row in cursor:
            print(row[0])

使用with上下文管理器可以自动关闭连接和游标,无需手动调用close(),代码更安全简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:10:41