Flask使用SQLAlchemy创建多数据库遇MySQLdb模块缺失错误求助
问题解决方法
核心错误原因
你遇到的ModuleNotFoundError: No module named 'MySQLdb'是因为:
MySQLdb是仅支持Python 2的旧版MySQL驱动,当前Python 3.x环境无法兼容该库。- 你的数据库连接URI使用了
mysql://前缀,SQLAlchemy默认会尝试加载MySQLdb驱动,但该驱动未安装且不适配当前Python版本。
具体修复步骤
1. 安装兼容的MySQL驱动
根据需求选择以下一种驱动安装:
- 推荐:mysqlclient(性能更优,接近原生驱动)
pip install mysqlclient - 备选:PyMySQL(纯Python实现,兼容性好)
若选PyMySQL,需修改数据库URI前缀为pip install pymysqlmysql+pymysql://,明确告诉SQLAlchemy使用该驱动:app.config['SQLALCHEMY_BINDS'] = { 'user_database': 'mysql+pymysql://root:password@localhost/userdatabase' }
2. 修正数据库URI格式错误
你的URI多了一个斜杠,mysql:///root:...应改为mysql://root:...,正确格式如下:
app.config['SQLALCHEMY_BINDS'] = { 'user_database': 'mysql://root:password@localhost/userdatabase' }
3. 代码小错误修正
User类中的方法名拼写错误:set_passoword需改为set_password,避免后续调用时触发AttributeError。
额外说明
如果你的目标是使用SQLite数据库(比如你提到的user_database.db),完全不需要用MySQL的URI,直接将bind的URI改为SQLite格式即可,无需安装MySQL驱动:
app.config['SQLALCHEMY_BINDS'] = { 'user_database': 'sqlite:///' + os.path.join(path, 'user_database.db') }
内容的提问来源于stack exchange,提问作者user23059245
相关产品推荐
相关产品推荐

