如何使用Flask应用工厂与Peewee FlaskDB连接远程MySQL数据库
问题原因
报错peewee.ImproperlyConfigured: MySQL driver not installed!是因为Python运行环境缺少MySQL连接驱动,MySQL Workbench等客户端工具自带独立驱动,和Python环境不互通,所以会出现工具能正常连接但代码报错的情况。
第一步:安装MySQL驱动
选择以下任意一个驱动安装即可:
- 优先选择性能更高的
mysqlclient:
pip install mysqlclient
如果安装时出现编译报错(常见于Windows系统、无编译环境的Linux服务器),可改用纯Python实现的pymysql:
pip install pymysql
如果安装pymysql后仍然提示驱动不存在,在你的__init__.py文件最顶部添加以下代码即可:
import pymysql pymysql.install_as_MySQLdb()
第二步:验证基础连接
安装完成后重启Flask应用,即可正常连接远程MySQL,原配置无需额外修改。如果你的MySQL服务使用了非3306默认端口,需要在DATABASE配置中补充端口参数:
DATABASE = { 'name': 'mydb', 'engine': 'peewee.MySQLDatabase', 'user': 'root', 'passwd': 'root', 'host': 'xxx.xxx.xxx.xxx', 'port': 3307 # 替换为你的实际端口 }
SSL加密连接配置
如果需要启用SSL加密连接,直接在DATABASE配置中添加ssl参数即可,根据你的验证需求选择对应配置:
场景1:强制SSL连接,不验证证书(适配自签证书、测试环境)
DATABASE = { 'name': 'mydb', 'engine': 'peewee.MySQLDatabase', 'user': 'root', 'passwd': 'root', 'host': 'xxx.xxx.xxx.xxx', 'ssl': {'ssl_mode': 'REQUIRED'} }
场景2:验证CA证书(生产环境推荐)
把服务端提供的CA证书、客户端证书密钥放到项目可访问的目录下,配置如下:
DATABASE = { 'name': 'mydb', 'engine': 'peewee.MySQLDatabase', 'user': 'root', 'passwd': 'root', 'host': 'xxx.xxx.xxx.xxx', 'ssl': { 'ssl_mode': 'VERIFY_CA', 'ca': '/path/to/ca.pem', 'cert': '/path/to/client-cert.pem', 'key': '/path/to/client-key.pem' } }
如果需要同时验证MySQL主机名,把ssl_mode改为VERIFY_IDENTITY即可。
内容的提问来源于stack exchange,提问作者SimonB
相关产品推荐
相关产品推荐

