Conector MySQL para Python en Manjaro#
Ahora que uso
Manjaro en lugar de Ubuntu,
uno de los problemas que encontré para adecuar el entorno de desarrollo que uso
en mi trabajo, es que el conector de MySQL para Python MySQLDb depende de
libmysqlclient-dev
, que no está disponible en Manjaro. Te cuento cómo
solucioné el problema.
Conector MySQL#
El conector de bases de datos ofrece una interfaz para interactuar con bases de datos desde una aplicación. Los fabricantes de bases de datos ofrecen sus propios conectores para distintos lenguajes de programación, controladores nativos que permiten a la comunidad interactuar con las bases de datos creando nuevas extensiones o incluso la definición del estándar de tal modo que existan implementaciones en diferentes lenguajes y que no posean dependencias con el sistema operativo.
En el caso del conector MySQL para Python, el conector oficial depende de
libmysqlclient-dev
(con el paquete python de mysqlclient
), que no está
disponible en Manjaro.
Alternativas de conexión Python con MySQL en Manjaro#
Podemos tener dos alternativas para conectarnos a MySQL desde Python en Manjaro, considerando una conexión nativa, pero también una conexión sin dependencias con el sistema operativo.
Conector de MariaDB#
MariaDB es una base de datos relacional de código abierto que se basa en el
código fuente de MySQL. Es compatible con la mayoría de las características de
MySQL y ofrece mejoras en seguridad, rendimiento y escalabilidad. Esta
compatibilidad ofrece una alternativa a la conexión nativa de MySQL con la que
podremos instalar mysqlclient
con nuestro gestor de paquetes Python de forma
habitual. Para instalar las dependencias nativas, en Manjaro y derivados de
Arch, procedemos de la siguiente manera:
pamac install mariadb-libs
Ahora podremos instalar el paquete Python mysqlclient
con nuestro gestor de
paquetes Python de forma habitual
(paquete en el ambiente
o
en el proyecto):
uv pip install mysqlclient # Instalación en el ambiente
uv add mysqlclient # Instalación en el proyecto
Conector MySQL en Python Puro#
Existe también un conector MySQL en Python puro que cumple también el estándar de conexiones a base de datos definidas por el PEP 249, tal como el conector nativo. Esta opción es PyMySQL, y es una excelente alternativa si no puedes instalar las dependencias nativas de MySQL o MariaDB, o simplemente prefieres no instalarlas.
Para hacer la instalación de PyMySQL, simplemente ejecutamos el siguiente comando:
uv pip install PyMySQL # Instalación en el ambiente
uv add PyMySQL # Instalación en el proyecto
Ahora puedes usar en tus proyectos pymysql
de forma directa, o usarlo como un
sustituto de MySQLdb
cuando la dependencia nativa no está disponible, lo cual
se hace de la siguiente manera:
try:
import MySQLdb
except ImportError:
import pymysql
# Reemplaza `MySQLdb` por `pymysql`
pymysql.install_as_MySQLdb()
Otras alternativas#
Para configurar el entorno de desarrollo podrías tener otras opciones, y comentaré ligeramente dos más. A través de AUR, puedes instalar las dependencias nativas de MySQL, pero considero que al tener opciones que no contaminan el sistema, podemos omitir. La otra alternativa es que un entorno de desarrollo adecuado sería adecuar un contenedor local basado en Ubuntu, de tal forma de replicar adecuadamente el entorno de producción. Esto sin duda les comentaré un poco más sobre Docker más adelante, pero de momento prefiero la comodidad de tener el entorno directamente en Manjaro sin el contenedor (la integración de la IDE que uso, Zed, no me parece todavía tan buena).
Referencias#
Python mariadb connector. Manjaro Linux Forum.
PyMySQL. Documentation.
install_as_mysqldb. GitHub PyMySQL.