SQLAlchemy无法与Flask应用连接,报ModuleNotFoundError错误
Flask-SQLAlchemy 连接MySQL时出现
ModuleNotFoundError: No module named 'MySQLdb'的解决办法 错误原因
MySQLdb是仅支持Python 2的MySQL驱动库,Python 3.x版本无法兼容,因此SQLAlchemy尝试导入它时会触发该错误。
解决方法
方法1:用PyMySQL替代(推荐,跨平台易安装)
- 先安装PyMySQL:
pip install pymysql - 在Flask应用初始化代码中,让PyMySQL伪装成MySQLdb,并修改连接字符串:
from flask import Flask from flask_sqlalchemy import SQLAlchemy import pymysql # 让PyMySQL模拟MySQLdb的接口 pymysql.install_as_MySQLdb() app = Flask(__name__) # 连接字符串改为mysql+pymysql://格式 app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://你的用户名:你的密码@localhost/数据库名' db = SQLAlchemy(app)
方法2:使用mysqlclient(性能更好的原生C扩展)
mysqlclient是MySQLdb的Python 3分支,性能优于PyMySQL,但安装需要系统依赖支持:
- 先安装系统依赖:
- macOS(通过Homebrew):
brew install mysql-connector-c - Ubuntu/Debian:
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
- macOS(通过Homebrew):
- 安装mysqlclient:
pip install mysqlclient - 连接字符串使用原生格式即可,无需额外配置:
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+mysqldb://你的用户名:你的密码@localhost/数据库名'
内容的提问来源于stack exchange,提问作者Nasir Mehmood
相关产品推荐
相关产品推荐

