已安装PyMySQL仍遇ModuleNotFoundError: No module named 'MySQLdb'求助
解决Flask-SQLAlchemy找不到MySQLdb的问题
问题原因
你的环境安装了PyMySQL和mysql-connector-python,但SQLAlchemy默认的MySQL方言会优先尝试加载MySQLdb(一个老旧的C语言实现的MySQL驱动),而这个库你并没有安装,也不需要安装——PyMySQL是它的纯Python替代方案,只需配置SQLAlchemy使用PyMySQL即可。
解决方案
方法1:修改数据库连接URL
直接在Flask配置中,把数据库URI的前缀从mysql://改为mysql+pymysql://,明确指定使用PyMySQL驱动:
# 示例配置 app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@localhost/db_name'
方法2:注册PyMySQL作为MySQLdb的替代
如果不想修改URL,可以在项目启动的入口文件(比如start.py)最顶部添加以下代码,让PyMySQL模拟MySQLdb的接口:
import pymysql pymysql.install_as_MySQLdb()
注意事项
- 无需安装
MySQLdb或MySQL-python,这两个库在Python3.10+环境下兼容性差,PyMySQL完全可以满足需求。 - 确保你的数据库账号、密码、主机和库名配置正确,避免因连接信息错误导致其他问题。
内容的提问来源于stack exchange,提问作者Ciasto piekarz
相关产品推荐
相关产品推荐

