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

持续出现psycopg2.ProgrammingError: no results to fetch错误求助

解决psycopg2.ProgrammingError: no results to fetch错误

问题描述

  • 通过_rowcount = db_cursor_eb.rowcount获取到有12行记录,但执行fetchall()时触发psycopg2.ProgrammingError: no results to fetch错误
  • 错误具体出现在executequery方法的第131行,执行_row = db_cursor_eb.fetchone()时抛出

原因分析

  • 游标已被提前消费:如果在调用rowcount之前,已经执行过fetchone()、fetchall()或其他移动游标的操作,游标会指向结果集末尾,此时再调用fetchall()自然无法获取数据
  • rowcount的不可靠性:psycopg2中rowcount对于SELECT操作并非实时反映游标当前状态,它记录的是最后一次查询影响的行数,即便游标已被读取,该值可能仍保留之前的结果,导致和实际游标状态不一致

解决办法

  • 重置游标位置:
    若之前执行过读取游标的操作,可将游标重置到结果集开头后再读取:

    # 将游标重置到结果集起始位置
    db_cursor_eb.scroll(0, mode='absolute')
    _lResultSet = db_cursor_eb.fetchall()
    

    也可以重新执行一次查询,确保游标处于初始状态。

  • 直接通过结果集判断:
    放弃依赖rowcount,直接调用fetchall()后判断结果是否为空:

    _lResultSet = db_cursor_eb.fetchall()
    if not _lResultSet:
        _lResultSet = "No record found"
    return _lResultSet
    
  • 规范游标使用:
    每次执行查询后,确保从游标初始位置开始读取数据,不要在中间随意移动游标位置,避免出现游标状态和rowcount不匹配的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 15:33:13