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

Python使用mysql.connector查询MySQL时fetchall返回空列表如何解决

问题排查与解决方案

  • 连接参数取值错误
    你当前代码里的连接参数值全部用双引号包裹,比如host="config.host"实际传递的是字符串常量config.host,而非配置对象对应属性的值;同时密码参数你误写为config.db_user,和用户名参数取值一致,属于明显手误,哪怕连接建立成功,也大概率连接的是错误的数据库实例。正确的参数写法如下:

    connection = connect(
        host=config.host,
        database=config.db_name,
        user=config.db_user,
        password=config.db_password
    )
    
  • 事务隔离导致数据不可见
    mysql-connector-python默认关闭自动提交,默认事务隔离级别为可重复读,如果你查询的数据是其他会话近期提交写入的,当前会话无法读取到最新的已提交数据。可以在创建连接时开启自动提交解决:

    connection = connect(
        host=config.host,
        database=config.db_name,
        user=config.db_user,
        password=config.db_password,
        autocommit=True
    )
    

    也可以在执行查询前手动提交一次事务:connection.commit()

  • 跨库查询权限问题
    你的查询语句显式指定了occUserManager库下的表,而连接时指定的默认库为config.db_name,如果二者不一致,且当前数据库账号没有occUserManager库的查询权限,不会抛出权限报错但会返回空结果。你可以先执行以下语句校验权限:

    cursor.execute("SELECT DATABASE();")
    print(cursor.fetchone()) # 打印当前会话默认库
    cursor.execute("SHOW GRANTS;")
    print(cursor.fetchall()) # 打印当前账号权限
    
  • 游标缓冲问题
    可以在创建游标时开启缓冲,避免结果集未正常加载导致返回空:

    cursor = connection.cursor(buffered=True)
    

内容的提问来源于stack exchange,提问作者Tacio Degrazia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 22:06:04