首页 > 数据库 > mysql教程 > 为什么 `fetchone()` 在 Python 的 MySQL 连接器中导致'发现未读结果”,缓冲游标如何修复它?

为什么 `fetchone()` 在 Python 的 MySQL 连接器中导致'发现未读结果”,缓冲游标如何修复它?

DDD
发布: 2024-11-27 10:32:10
原创
325 人浏览过

Why Does `fetchone()` Cause

Python MySQL Connector: Unread Result Found When using fetchone

此问题涉及使用以下命令将 JSON 数据插入 MySQL 数据库时遇到的问题Python MySQL 连接器。插入更高级别的详细信息并尝试根据出发地和目的地坐标以及时间戳将较低级别的信息与父级信息相关联时,代码将失败并显示错误“发现未读结果”。

用于搜索的查询对于每组坐标和时间戳的唯一航段编号为:

query = ('SELECT leg_no FROM leg_data WHERE travel_mode = %s AND Orig_lat = %s AND Orig_lng = %s AND Dest_lat = %s AND Dest_lng = %s AND time_stamp = %s')
登录后复制

最初,尝试丢弃任何未读的结果:

cursor.execute(query,(leg_travel_mode, leg_Orig_lat, leg_Orig_lng, leg_Dest_lat, leg_Dest_lng))
leg_no = cursor.fetchone()[0]
try:
    cursor.fetchall()
except mysql.connector.errors.InterfaceError as ie:
    if ie.msg == 'No result set to fetch from.':
        pass
    else:
        raise
cursor.execute(query,(leg_travel_mode, leg_Orig_lat, leg_Orig_lng, leg_Dest_lat, leg_Dest_lng, time_stamp))
登录后复制

但是,错误依然存在。

经过进一步调查,发现解决方案在于指定缓冲游标。将 buffered=True 添加到游标初始化行解决了该问题:

cursor = cnx.cursor(buffered=True)
登录后复制

这可确保在幕后提取所有行,从而防止发生错误。

以上是为什么 `fetchone()` 在 Python 的 MySQL 连接器中导致'发现未读结果”,缓冲游标如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板