Cómo Configurar y Conectar Django con MySQL paso a paso

Partimos de que, ya sabemos como trabajar con los modelos en Django, y el siguiente paso es la base de datos; aunque, Django por defecto usa SQLite, la cual es una base de datos excelente, a veces necesitamos emplear alguna base de datos más completa como lo es MySQL.

Con todas las capas que cuenta nuestro framework, una de las principales es la del manejo de datos, en otras palabras forma parte de nuestra base de datos, que pueden ser de varios tipos como MySQL, MariaDB, PostgreSQL entre otras.

Cuando desarrollé mi primer proyecto con Django, la parte que más dudas me generó fue cómo conectar Django con MySQL. Aunque el framework trae SQLite por defecto, en cuanto un proyecto crece o se despliega en producción, MySQL se vuelve una opción más robusta y escalable.

En esta guía te muestro cómo integrar Django con MySQL paso a paso, tal como lo hago en mis proyectos reales. Vamos a ver requisitos, instalación, configuración y cómo resolver los errores más comunes.

🚀 ¿Por qué usar MySQL con Django?

Aunque Django funciona perfectamente con SQLite, MySQL ofrece ventajas clave:

  • Escalabilidad: ideal para entornos de producción con múltiples usuarios.
  • Compatibilidad: muchos servicios de hosting soportan MySQL nativamente.
  • Gestión avanzada: puedes usar herramientas como MySQL Workbench o phpMyAdmin.

En mi caso, decidí usar MySQL porque necesitaba manejar varias bases de datos y consultas complejas sin depender de un solo archivo local como ocurre con SQLite.

Conectores para cada motor de base de datos

Django puede conectarse a MySQL usando dos drivers:

  • mysqlclient (oficial)
  • PyMySQL (alternativo, más flexible)

Lo principal que tienes que tener en cuenta al momento en el cual quieras conectarte a un motor de base de datos, es que simplemente varía el conector, es decir, dependiendo al servidor de la base de datos que quieras conectarte simplemente tienes que variar el conector y en la documentación oficial que te dejo un poco más abajo podrás ver los distintos tipos de conectores que puedes emplear y con esto los diferentes clientes.

En esta entrada vamos a ver cómo podemos crear una conexión con MySQL en Django; para eso tenemos un par de maneras, la oficial o la no oficial; si revisamos la documentación oficial.

Veremos que nos indican que a partir de la versión 3 de Django podemos emplear un Driver nativo para MySQL y para MariaDB que tu eres libre de probar la solución oficial, pero en caso e que te de un error como el siguiente:

*** no se puede abrir el archivo incluir 'mysql.h' ***

Probando la versión NO oficial del conector de MySQL

Podemos probar otra solución que seria instalar un paquete que servirá como driver o conector a nuestro MySQL que viene siendo el siguiente:

pip install PyMySQL

Entonces lo instalamos y ahora le tenemos que decir a nuestro proyecto en Django que emplee este driver; para eso:

firstProject\firstProject\__init__py
import pymysql
pymysql.version_info = (1, 3, 13, "final", 0)
pymysql.install_as_MySQLdb()

Y ahora simplemente tenemos que crear la base de datos que vamos a usar y luego establecer el resto de las conexiones:

firstProject\firstProject\settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'djangofirstproyect',
        'USER': 'root',
        'PASSWORD': ''
    }
}

Y con esto estamos listos para hacer operaciones más interesantes empleando nuestro MTV en Django cosa que haremos a partir de la siguiente entrada.  

  • DATABASE_NAME Indicamos el nombre de la base de datos. Si estás usando SQLite, especifica la ruta completo incluyendo el sistema de archivos hacia el archivo/base de datos.
  • DATABASE_USER Indicamos cual es el usuario de base de datos que vamos a emplear para conectarnos a la base de datos anterior.
  • DATABASE_PASSWORD Indicamos la contraseña del usuario anterior
  • DATABASE_HOST Este es uno de los elementos más importantes y es el host, si estamos en ambiente de desarrollo seguro será el de localhost o servidor local, pero si estas en ambiente de producción es muy probable que cambie a otro o una IP.

Dependiendo de la base de datos que vayas a emplear, seguramente tendrás que agregar algunos parámetros más o menos, por ejemplo en el caso de SQLite, que es la que viene por defecto, no es necesario indicar ni usuario/contraseña y tampoco host, ya que la misma simplemente es un archivo.

Lo siguiente que veremos es como crear un modelo para nuestra primera aplicación.

🧠 Inicializar la conexión y probar el enlace

Una vez configurado el settings.py, ejecuta las migraciones en Django para verificar la conexión:

$ python manage.py migrate

Si todo va bien, Django creará automáticamente las tablas del sistema en tu base de datos MySQL.

Yo suelo confirmar la conexión directamente desde MySQL Workbench: las tablas auth_user, django_session, entre otras, deben aparecer allí.

También puedes hacer una prueba rápida desde el shell:

$ python manage.py shell
>>> from django.db import connection
>>> connection.ensure_connection()
>>> print("Conexión establecida correctamente")

❗ Errores comunes al conectar Django con MySQL (y cómo los resolví)

Durante mis primeras pruebas me topé con algunos errores típicos:

Error    Causa    Solución
no se puede abrir mysql.h    Falta de dependencias de MySQL client    Instala PyMySQL o instala libmysqlclient-dev en Linux
Access denied for user 'root'@'localhost'    Contraseña incorrecta o usuario sin permisos    Revisa USER y PASSWORD en settings.py
django.db.utils.OperationalError    MySQL no iniciado    Verifica que el servicio esté activo (sudo service mysql start)

Estos pequeños contratiempos son comunes. En mi caso, con PyMySQL todo funcionó sin complicaciones.

⚖️ PyMySQL vs mysqlclient: ¿cuál conviene más?

Aspecto    PyMySQL    mysqlclient
Instalación    Muy sencilla, sin compilación    Requiere dependencias del sistema
Rendimiento    Ligero y suficiente para la mayoría de proyectos    Algo más rápido en grandes bases
Compatibilidad    Funciona bien en Windows, macOS y Linux    A veces da errores en Windows
Recomendación    Ideal para entornos de desarrollo y medianos    Recomendado en producción si tu entorno lo permite

Yo prefiero PyMySQL por su facilidad y estabilidad, especialmente cuando trabajo en Windows o entornos virtualizados.

🏁 Conclusión y próximos pasos

Con esto ya tienes tu proyecto Django conectado a MySQL y listo para construir modelos, vistas y migraciones.
En mi experiencia, esta configuración se mantiene estable incluso al desplegar en producción.
El siguiente paso natural es crear tus modelos y comenzar a manipular datos desde el ORM de Django.

❓ Preguntas frecuentes

1. ¿Puedo usar MariaDB en lugar de MySQL?
Sí, Django es compatible de forma nativa desde la versión 3.

2. ¿Cómo pruebo si mi conexión funciona?
Ejecuta python manage.py migrate o usa python manage.py dbshell.

3. ¿Qué hago si PyMySQL no funciona?
Verifica tu versión de Python y Django, reinstala con pip install --upgrade PyMySQL.

Acepto recibir anuncios de interes sobre este Blog.

Vamos a aprender a configurar una base de datos MySQL empleando la extensión o paquete NO oficial para Python en nuestro proyecto en Django, pero recuerda que puedes empelar diversos tipos de servidores en tu proyecto.

| 👤 Andrés Cruz

🇺🇸 In english