关于游标异常

关于游标异常

# coding:utf-8

import mysql.connector.pooling

"""
    使用INSERT语句,把部门平均底薪超过公司平均底薪的部门里的员工信息导入t_emp_new表里,并且让这些
    员工隶属于SALES部门
"""

config = {
    "host": "localhost",
    "port": 3306,
    "user": "root",
    "password": "remember",

相关截图:

https://img1.sycdn.imooc.com//climg/6497ac870955550905140382.jpg

老师,请问一下为什么这里我直接for循环游标后执行程序就会捕获异常,提示Unread result found,而用fetchall()保存到temp变量再循环temp就可以正常执行?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好!是通过游标,执行SQL语句,fetchall()获取的是demo 数据库下的所有表名,如下图红色框。cursor 输出的是个游标,并没有指向哪个表,无法删除。所以会捕获异常

https://img1.sycdn.imooc.com//climg/6497b39c095fba2318560630.jpg


祝学习愉快~

  • https://img1.sycdn.imooc.com//climg/6498f5bb093c2e8105820310.jpg

    https://img1.sycdn.imooc.com//climg/6498f61d09127ba805140286.jpg

    这里不调用fetchall函数,直接遍历游标也可以取到表名,也正常进入if语句了,为什么执行sql就会异常?

    2023-06-26 10:21:45
  • 同学,你好!是游标的问题,可以将游标设置为缓冲游标,这样不会造成Unread result found

    https://img1.sycdn.imooc.com//climg/64990bc009bf886105350151.jpg

    对于使用缓冲游标执行的语句,行提取方法(如fetchone(),fechcall()等)返回的是缓冲区中的行。对于非缓冲游标,只有在调用行提取方法后才能从服务器提取行。在这种情况下,须确保在同一连接上执行任何其他语句之前提取结果集中的所有行,否则将引发Unread result found 异常错误

    祝学习愉快~

    2023-06-26 12:05:22
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师