Python MySQL 连接器:使用 Fetchone 时“发现未读结果”
使用 Python 连接器将解析的 JSON 数据插入 MySQL 数据库时,出现错误:“发现未读结果。”此错误与特定的代码段相关。
在代码片段中,使用cursor.execute 方法执行一系列查询,然后调用cursor.fetchone 以从结果集。但是,当将此代码添加到较大的程序中时,使用同一游标的后续查询会失败,并出现“发现未读结果”错误。
该错误表明先前的查询存在未处理的结果。要解决此问题,建议使用cursor.fetchall 方法耗尽每个查询的结果。然而,尝试在 try-except 块中执行此操作以处理 mysql.connector.errors.InterfaceError 已被证明是不成功的。
导致错误的具体代码部分如下:
cursor.execute(query,(travel_mode, Orig_lat, Orig_lng, Dest_lat, Dest_lng, time_stamp)) 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)
将缓冲参数设置为 True 时,不再遇到“未读结果找到”错误。
以上是为什么我的 Python MySQL 连接器在使用 `fetchone()` 时抛出'未读结果找到”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!