Python 3.x环境下flask_mysqldb无法正常运行的解决求助
解决flask_mysqldb依赖MySQLdb导致的ModuleNotFoundError问题
方法一:用pymysql伪装MySQLdb
这是最省事的解决方案,pymysql本身支持模拟MySQLdb的接口,你只需要在应用入口文件的最开头添加这段代码,必须放在导入flask_mysqldb之前:
import pymysql pymysql.install_as_MySQLdb()
之后正常编写Flask代码即可:
from flask import Flask from flask_mysqldb import MySQL app = Flask(__name__) # 填入你的数据库配置信息 app.config['MYSQL_HOST'] = 'localhost' app.config['MYSQL_USER'] = '你的数据库用户名' app.config['MYSQL_PASSWORD'] = '你的数据库密码' app.config['MYSQL_DB'] = '你的数据库名' mysql = MySQL(app)
这样flask_mysqldb会误以为导入的是MySQLdb,实际底层使用的是兼容Python3的pymysql,完美解决依赖问题。
方法二:换用兼容Python3的Flask MySQL扩展
如果伪装方案出现不稳定情况,或者你想彻底替换依赖,可以尝试以下两个替代工具:
- flask-mysqlconnector:专为Python3适配的MySQL扩展
- 先安装包:
pip install flask-mysqlconnector - 修改代码示例:
from flask import Flask from flask_mysqlconnector import MySQL app = Flask(__name__) # 配置数据库参数 app.config['MYSQL_HOST'] = 'localhost' app.config['MYSQL_USER'] = '你的数据库用户名' app.config['MYSQL_PASSWORD'] = '你的数据库密码' app.config['MYSQL_DB'] = '你的数据库名' mysql = MySQL(app)
- 先安装包:
- flask-sqlalchemy:ORM框架,支持多数据库类型,灵活性更高
- 安装依赖:
pip install flask-sqlalchemy pymysql - 配置代码示例:
from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # 数据库URI格式:mysql+pymysql://用户名:密码@主机地址/数据库名 app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://你的用户名:你的密码@localhost/你的数据库名' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # 关闭不必要的修改追踪 db = SQLAlchemy(app)
- 安装依赖:
额外检查步骤
- 彻底卸载旧的MySQLdb依赖:
pip uninstall MySQL-python -y - 确保pymysql是最新版本:
pip install pymysql --upgrade
内容的提问来源于stack exchange,提问作者Sriram
相关产品推荐
相关产品推荐

