Python 3.6使用mysql.connector报错AttributeError问题求助
问题分析与解决方案
这个问题的根源是脚本文件名和Python标准库模块重名了!
看报错信息里的关键线索:
File "C:\Users\preet\Desktop\ptyhon-newspaper\select.py", line 7, in <module> cnx = mysql.connector.connect(user='root', password='Jinqm21k', AttributeError: module 'mysql' has no attribute 'connector'
再往上追溯调用链会发现,mysql.connector内部的network.py尝试导入标准库的select模块时,错误地加载了你自己写的select.py:
File "C:\Users\preet\AppData\Local\Programs\Python\Python36\lib\selectors.py", line 11, in <module> import select File "C:\Users\preet\Desktop\ptyhon-newspaper\select.py", line 7, in <module>
Python的模块导入优先级是:先找当前工作目录下的文件,再去系统库目录查找。你的脚本刚好和标准库的select模块同名,导致mysql-connector内部的导入逻辑被打乱,形成循环导入,最终抛出这个看似和mysql无关的错误。
快速修复步骤:
- 马上把你的查询脚本重命名,比如改成
employee_query.py或者任何不与Python标准库模块同名的名字(可以提前查一下Python标准库列表,避免再踩同类坑)。 - 如果当前目录下生成了
select.pyc(Python编译后的缓存文件),也一并删除,防止缓存残留干扰后续运行。 - 重新运行修改后的脚本,应该就能正常导入
mysql.connector并执行所有数据库操作了。
至于为什么一开始正常后来突然报错,大概率是你后来把脚本改成了select.py——之前的文件名没有冲突,所以能正常运行~
内容的提问来源于stack exchange,提问作者Lovepreet Singh Batth
相关产品推荐
相关产品推荐

