Django
Tutorial Django: Base de datos MySQL en Django
MySQL Instalación y configuración para Django, guía completa para conectar MySQL con tu proyecto web y garantizar una base de datos segura y eficiente.
Aprende Django GRATIS y certifícateInstalación de MySQL
Para utilizar MySQL como base de datos en un proyecto Django, es necesario instalar el servidor MySQL y configurar un usuario con los permisos adecuados.
En sistemas basados en Ubuntu, abre una terminal y ejecuta los comandos:
sudo apt update
sudo apt install mysql-server
En macOS, se recomienda usar Homebrew para instalar MySQL. Abre la terminal y ejecuta:
brew update
brew install mysql
brew services start mysql
En Windows, descarga el instalador de MySQL desde la página oficial de MySQL. Durante el proceso de instalación, asegúrate de incluir el servidor MySQL y configurar una contraseña segura para el usuario root.
Después de la instalación, es importante realizar la configuración inicial para asegurar el servidor. En Ubuntu y macOS, ejecuta:
sudo mysql_secure_installation
Este script guiará en la configuración de opciones de seguridad, como la validación de contraseñas y la eliminación de usuarios anónimos. En Windows, estas configuraciones suelen realizarse durante el proceso de instalación a través del asistente.
A continuación, accede al shell de MySQL con privilegios de administrador. En Ubuntu y macOS:
sudo mysql -u root -p
En Windows, abre el Command Prompt (CMD) o PowerShell como administrador y ejecuta:
mysql -u root -p
Dentro del shell de MySQL, crea una nueva base de datos y un usuario con permisos específicos:
CREATE DATABASE nombre_base_datos CHARACTER SET UTF8MB4;
CREATE USER 'usuario_django'@'localhost' IDENTIFIED BY 'contraseña_segura';
GRANT ALL PRIVILEGES ON nombre_base_datos.* TO 'usuario_django'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Reemplaza nombre_base_datos
, usuario_django
y contraseña_segura
por valores específicos para tu proyecto, utilizando nombres descriptivos y contraseñas robustas.
Para que Django pueda interactuar con MySQL, es necesario instalar el conector mysqlclient. Asegúrate de estar dentro de tu entorno virtual de Python y ejecuta:
pip install mysqlclient
Este paquete permite a Django establecer una conexión con la base de datos MySQL. Verifica que la instalación se complete sin errores.
Ajuste en settings.py
para MySQL
Una vez instalado MySQL y creado el usuario y la base de datos, es necesario configurar el archivo settings.py de tu proyecto Django para establecer la conexión con la base de datos.
Abre el archivo settings.py y localiza el diccionario DATABASES. Debes modificarlo para que utilice el motor de base de datos MySQL en lugar de la configuración por defecto que utiliza SQLite.
La configuración quedaría de la siguiente manera:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'nombre_base_datos',
'USER': 'usuario_django',
'PASSWORD': 'contraseña_segura',
'HOST': 'localhost',
'PORT': '3306',
'OPTIONS': {
'charset': 'utf8mb4',
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
},
}
}
Asegúrate de reemplazar nombre_base_datos
, usuario_django
y contraseña_segura
por los valores que configuraste al crear la base de datos y el usuario en MySQL.
Es importante destacar los siguientes puntos en la configuración:
- ENGINE: Especifica el backend de la base de datos. Para MySQL, debe ser
'django.db.backends.mysql'
. - NAME: Indica el nombre de la base de datos que utilizará el proyecto.
- USER y PASSWORD: Credenciales del usuario de la base de datos con permisos adecuados.
- HOST y PORT: Dirección y puerto donde se encuentra el servidor de MySQL. Si está en la misma máquina, se utiliza
'localhost'
y el puerto predeterminado'3306'
.
Además, en la clave OPTIONS, establecemos:
- charset: Configurado a
'utf8mb4'
para soportar emojis y caracteres especiales. - init_command: Utilizamos
"SET sql_mode='STRICT_TRANS_TABLES'"
para asegurar que Django maneje los datos de forma consistente y se apliquen las restricciones de integridad.
Es recomendable utilizar variables de entorno para manejar información sensible como PASSWORD y SECRET_KEY. Puedes hacerlo usando módulos como python-dotenv o configurando las variables directamente en el entorno del sistema operativo.
Ejemplo utilizando os.environ:
import os
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': os.environ.get('DB_NAME', 'nombre_base_datos'),
'USER': os.environ.get('DB_USER', 'usuario_django'),
'PASSWORD': os.environ.get('DB_PASSWORD', 'contraseña_segura'),
'HOST': 'localhost',
'PORT': '3306',
'OPTIONS': {
'charset': 'utf8mb4',
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
},
}
}
De esta manera, puedes definir las variables de entorno DB_NAME
, DB_USER
y DB_PASSWORD
en tu sistema, evitando que datos sensibles se almacenen en el código fuente.
Si necesitas soporte para conexiones TLS/SSL o configuraciones adicionales, puedes agregar más parámetros dentro de OPTIONS según la documentación oficial de Django y MySQL.
Verificación de la conexión
Después de configurar la conexión a MySQL en settings.py, es esencial verificar que Django interactúa correctamente con la base de datos. Para ello, ejecuta las migraciones iniciales que crean las tablas necesarias para el funcionamiento del framework.
Desde la línea de comandos, en el directorio raíz del proyecto, ejecuta:
python manage.py migrate
Este comando aplicará las migraciones pendientes y creará las tablas en la base de datos MySQL. Si la conexión se establece correctamente, verás una serie de mensajes indicando que las migraciones se han aplicado con éxito.
Si ocurre algún error durante la migración, es posible que haya un problema con la configuración de la base de datos. A continuación, se detallan algunos pasos para resolver posibles incidencias:
- Verifica que las credenciales (
USER
yPASSWORD
) ensettings.py
son correctas. - Asegúrate de que el servidor MySQL está en funcionamiento y escuchando en el puerto especificado.
- Comprueba que el usuario tiene los permisos adecuados sobre la base de datos.
Para confirmar que la aplicación funciona correctamente, inicia el servidor de desarrollo de Django:
python manage.py runserver
Abre un navegador web y accede a http://localhost:8000/. Deberías ver la página de inicio predeterminada de Django, lo que indica que la configuración es correcta.
Además, puedes utilizar la shell interactiva de Django para realizar consultas directas a la base de datos. Ejecuta:
python manage.py shell
Luego, en la consola interactiva, intenta importar un modelo y consultar la base de datos:
from django.contrib.auth.models import User
User.objects.all()
Si todo funciona correctamente, obtendrás un QuerySet
vacío o con los usuarios existentes, confirmando que la conexión está establecida y operativa.
Es recomendable revisar el archivo de registro (logs) en busca de mensajes de error o advertencias que puedan indicar problemas con la base de datos. Mantener un seguimiento de los logs ayuda a identificar y solucionar inconvenientes.
Finalmente, recuerda que, para proyectos en producción, es vital realizar pruebas exhaustivas y garantizar que la base de datos está optimizada y segura.
Todas las lecciones de Django
Accede a todas las lecciones de Django y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A Django
Introducción Y Entorno
Instalación Y Configuración Django Con Venv
Introducción Y Entorno
Arquitectura De Un Proyecto Django
Introducción Y Entorno
Base De Datos Mysql En Django
Modelos Y Base De Datos
Creación De Modelos
Modelos Y Base De Datos
Asociaciones De Modelos
Modelos Y Base De Datos
Migraciones
Modelos Y Base De Datos
Operaciones Crud Y Consultas
Modelos Y Base De Datos
Enrutamiento Básico
Vistas Y Plantillas
Plantillas Con Django Template Language
Vistas Y Plantillas
Vistas Basadas En Funciones
Vistas Y Plantillas
Vistas Basadas En Clases
Vistas Y Plantillas
Middlewares
Vistas Y Plantillas
Form Vs Modelform
Formularios
Procesamiento De Formularios
Formularios
Subida De Archivos
Formularios
En esta lección
Objetivos de aprendizaje de esta lección
- Instalar MySQL en Ubuntu, macOS y Windows.
- Configurar usuario y base de datos MySQL.
- Integrar MySQL con Django mediante settings.py.
- Verificar la conexión con migraciones y comandos de shell.