mysql-connector-python 8.1.0无法导入errorcode/Error模块求助
mysql-connector-python 8.1.0导入errorcode/Error失败的解决办法
问题背景
使用Python 3.10.11 + Flask 2.3.2开发MySQL API,虚拟环境安装了mysql-connector-python 8.1.0,运行时出现错误:
ImportError: cannot import name 'errorcode' from 'mysql.connector'
数据库本身可正常连接,移除errorcode/Error相关导入后应用能正常运行,但需要使用官方定义的异常类和错误码进行后续功能扩展。
原代码中的导入片段:
import mysql.connector, requests, os from mysql.connector import errorcode # 报错的导入 from flask_cors import CORS, cross_origin # ...其他导入
尝试from mysql.connector.errors import Error时也提示模块缺失。
原因分析
mysql-connector-python 8.0.30及以上版本调整了内部模块结构:
errorcode从顶级包移至mysql.connector.constants子模块- 异常类
Error虽仍在mysql.connector.errors中,但新版本不再将这些内容暴露在顶级包的导出列表中,直接从mysql.connector导入会触发找不到名称的错误。
解决办法
1. 修正errorcode的导入路径
将原来的导入语句:
from mysql.connector import errorcode
替换为:
from mysql.connector.constants import errorcode
2. 修正异常类Error的导入
确保使用正确的子模块路径导入:
from mysql.connector.errors import Error
如果仍提示模块缺失,可先在虚拟环境的Python交互模式中验证导入是否可行:
# 激活虚拟环境后执行python命令进入交互模式 >>> from mysql.connector.errors import Error >>> from mysql.connector.constants import errorcode
若交互模式下能成功导入,说明是项目代码的缓存问题,重启Flask应用即可。
3. 调整后的代码示例
修改后的完整导入部分:
import mysql.connector, requests, os from mysql.connector.constants import errorcode from mysql.connector.errors import Error from flask_cors import CORS, cross_origin import json from flask import (Flask, redirect, render_template, request,send_from_directory, url_for)
后续使用异常类时,可直接捕获Error并获取错误码:
except Error as err: return f"Something went wrong: {err}, error code: {err.errno}"
内容的提问来源于stack exchange,提问作者Leo Lewis
相关产品推荐
相关产品推荐

