Docker-Compose部署Airflow连接MariaDB时出现MySQLdb模块缺失错误
解决Airflow连接MariaDB时"No module named 'MySQLdb'"的问题
核心修复:指定PyMySQL作为连接驱动
问题根源是Airflow的MySQL连接默认使用MySQLdb库,但你仅安装了pymysql。SQLAlchemy需要明确指定驱动才能用PyMySQL替代MySQLdb,修改连接配置即可,无需自定义镜像:
- 在Airflow的Admin | Connections页面创建/编辑MySQL连接时,选好
Conn Type(MySQL),填完Host(host.docker.internal)、Login、Password、Schema后,在Extra字段添加JSON配置:{"driver": "pymysql"} - 或者直接将完整的SQLAlchemy连接字符串填入
Host字段:mysql+pymysql://用户名:密码@host.docker.internal:3306/目标数据库名
关于MariaDB与PyMySQL的兼容性
完全可以用PyMySQL连接MariaDB,二者协议兼容,不需要额外安装libmariadb3、libmariadb-dev这类系统库——PyMySQL是纯Python实现的客户端,无底层C库依赖,能避开M1 Mac(aarch64架构)的兼容性问题。
为什么不需要自定义镜像?
你已通过_PIP_ADDITIONAL_REQUIREMENTS安装pymysql,且官方镜像自带apache-airflow-providers-mysql,这两个依赖足够支持PyMySQL连接MariaDB,仅需指定驱动即可,无需重新构建镜像。
补充说明
你提到MariaDB不支持作为Airflow后端是正确的,但作为外部数据源连接,通过SQLAlchemy+PyMySQL完全可以正常工作,只需确保连接配置指定了正确的驱动。
内容的提问来源于stack exchange,提问作者Daryl
相关产品推荐
相关产品推荐

