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
相关产品推荐
相关产品推荐

