Conectar a Apache Superset con MySQL
Este procedimiento para conectar a Apache Superset con MySQL solo aplica cuando tenemos a Superset como contenedor docker.
Ya habíamos realizado el despliegue de un ambiente de pruebas de Apache Superset en el artículo anterior
Si estamos en este punto es por que necesitamos graficar datos almacenados en MySQL, y ya tenemos acceso a Apache Superset.
Debido a que Apache Superset no viene con conexión a MySQL de forma predeterminada, debemos ejecutar estos pasos para crear la conexión.
1- Instalamos pymysql dentro del contenedor
sudo docker exec -it --user root superset pip install pymysql --target /app/.venv/lib/python3.10/site-packages
2- Reiniciamos el contenedor
sudo docker restart superset
3- Como Apache Superset utiliza una librería llamada SQLAlchemy para hablar con las bases de datos, tenemos dos formas principales para comunicarnos con MySQL:
MySQL-Python (MySQLdb)
PyMySQL: Es una versión moderna escrita 100% en Python
El problema es que hay partes internas de Superset (especialmente al generar metadatos para gráficos) que están programadas para buscar específicamente el módulo llamado MySQLdb. Al no encontrarlo, la generación de gráficos puede lanzarnos errores. Así que ejecutamos el siguiente comando para solucionarlo
sudo docker exec -it --user root superset sh -c "echo 'import pymysql; pymysql.install_as_MySQLdb()' > /app/pythonpath/superset_config.py"
Entonces el anterior comando nos dice algo como ‘Cuando alguien pida MySQLdb, dale PyMySQL‘. A eso se le llama Monkey Patching. Volvemos a reiniciar el contenedor, y listo, ya estamos habilitados para crear datasets y graficos. Siguiendo estos pasos establecemos la conexión con MySQL.
El URI debe tener esta estrcutura:
mysql+pymysql://usuario_mysql:contraseña@servidor_mysql/base_de_datos
Recuerda que si la base de datos MySQL se encuentra en otra máquina, debe estar configurada para acepte conexiones desde otro host. Y listo, ya tenemos la conexión a MySQL.
Comparte esto en



