Django es un framework web gratuito y de código abierto creado en Python. Publicado por primera vez en 2005, Django incorpora el lema de “desarrollo rápido y diseño limpio y pragmático”. El framework, desplegado en un servidor web, puede producir rápidamente una interfaz web con funciones ricas, seguridad y escalabilidad.
Cualquier aplicación web depende de bases de datos para su contenido. Django, al ser un framework moderno, admite una serie de programas de bases de datos estándar, por ejemplo, PostgreSQL, SQLite, MySQL, etc. Esta guía mostrará cómo conectar una aplicación Django a una base de datos en MySQL.
Requisitos previos
Para seguir este tutorial, debe cumplir con ciertas condiciones previas antes de pasar a Django y la conexión a la base de datos:
- Un servidor web adecuado. En esta guía, utilizaremos un servidor Ubuntu.
- Un entorno de desarrollo de Python 3 configurado correctamente.
- Una aplicación de base de datos. Aquí tiene una guía detallada sobre cómo instalar y usar MySQL.
Instalación y configuración de Python 3
Django está escrito en Python. La ejecución de cualquier aplicación de Python requiere que los binarios de Python estén instalados en el sistema. Ubuntu viene con Python instalado por defecto. Aquí, utilizaremos Python 3. Desde la terminal, ejecute los siguientes comandos. Primero, actualice la APT caché y actualice (si está disponible) todos los paquetes instalados:
|
1 |
$ sudo apt update && sudo apt upgrade -y |
Python 3 está disponible directamente desde los servidores de paquetes oficiales de Ubuntu. El paquete
python-is-python3 crea un enlace blando del binario python a
python3 para facilitar su uso:
|
1 |
$ sudo apt install python3 python-is-python3 |
A continuación, verifique si la instalación se realizó correctamente:
|
1 2 |
$ python3 --version $ python --version |
Después de eso, necesitamos pip. Es el gestor de paquetes estándar de Python. Se encarga de gestionar las librerías adicionales de Python que no forman parte de la librería estándar. Tenga en cuenta que estamos instalando pip3 (para Python 3):
|
1 |
$ sudo apt install python3-pip |
Por último, necesitamos algunos paquetes adicionales para un entorno de programación robusto:
|
1 |
$ sudo apt install build-essential libssl-dev libffi-dev python3-dev |
Instalación y configuración de MySQL
Esta sección demostrará brevemente cómo instalar y configurar MySQL. Está disponible en los repositorios de paquetes predeterminados de Ubuntu:
|
1 |
$ sudo apt install mysql-server |
Si la instalación se realizó correctamente, MySQL comenzará a ejecutarse en segundo plano. Verifique si funciona correctamente:
|
1 |
$ systemctl status mysql |
El servidor MySQL está activo y en funcionamiento. Ahora podemos pasar de forma segura al desarrollo de nuestra aplicación Django.
Trabajar con Django
-
Establecer la aplicación Django de ejemplo
La base de nuestra aplicación web requiere el esqueleto del proyecto Django. Contiene todas las herramientas y librerías necesarias para crear una aplicación web robusta. Primero, crearemos un directorio dedicado para nuestra aplicación Django. Se recomienda dar al directorio un nombre significativo y coherente con la aplicación que vamos a crear. En esta demostración, lo llamaremos myDemoApp:
|
1 |
$ mkdir -pv myDemoApp |
Necesitamos el módulo venv de Python para crear un entorno virtual dentro del directorio. Instale el módulo usando APT:
|
1 |
$ sudo apt install python3-venv |
Luego, navegue al directorio y establezca un entorno virtual. Para mayor claridad, llamamos al entorno demoapp_env:
|
1 |
$ python3 -m venv demoapp_env |
A continuación, active el entorno virtual ejecutando el script activate:
|
1 |
$ . demoapp_env/bin/activate |
Ahora instalaremos Django dentro de este entorno virtual dedicado. Pip descargará e instalará algunos componentes adicionales:
|
1 |
$ pip install django |
Django está instalado y listo para ser utilizado. Llame al comando django-admin para crear un nuevo proyecto Django. Después de eso, dé a la aplicación un nombre apropiado:
|
1 |
$ django-admin startproject demoapp |
Creará un proyecto de demostración con los archivos y directorios de proyecto necesarios en su lugar:
|
1 |
$ ls -l |
El esqueleto del proyecto está listo. A continuación, debemos configurarlo correctamente para lograr nuestro objetivo.
-
Edición de la configuración del proyecto Django
Todas las configuraciones del proyecto se almacenan en el archivo settings.py. Se encuentra dentro del directorio del proyecto Django. Comenzaremos configurando una zona horaria adecuada y enumerando los hosts que pueden conectarse a la aplicación Django. Abra el archivo de configuración en un editor de texto:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
Desplácese hacia abajo en el script y busque la entrada TIME_ZONE. Para la demostración, la zona horaria está configurada en America/New_York:
|
1 |
$ TIME_ZONE = 'America/New_York' |
Como referencia, el siguiente comando imprimirá todas las zonas horarias admitidas en Linux:
|
1 |
$ timedatectl list-timezones |
A continuación, desplácese hasta la entrada ALLOWED_HOSTS. Controla qué máquina(s) pueden acceder a la aplicación. Para la demostración, solo contiene localhost:
|
1 |
$ ALLOWED_HOSTS = ['localhost'] |
Luego, guarde el archivo y cierre el editor. El siguiente comando aplicará los cambios:
|
1 |
$ python manage.py migrate |
Ahora, necesitamos crear una cuenta de administrador para la aplicación web. Esta cuenta se utilizará para acceder a la interfaz de administración de Django. Ejecute el siguiente comando:
|
1 |
$ python manage.py createsuperuser |
Le pedirá el nombre de usuario, el correo electrónico y la contraseña. La aplicación ya está lista para conectarse a la base de datos.
Conexión MySQL
-
Instalación de conectores MySQL y librerías de desarrollo
Para integrar MySQL en la aplicación Django, necesitamos algunas librerías adicionales de Python 3 que proporcionarán las herramientas necesarias. Utilizaremos el conector de base de datos mysqlclient. Es un fork de MySQLdb.
Asegúrese de que tenemos python3-dev instalado:
|
1 |
$ sudo apt install python3-dev |
También necesitamos algunas cabeceras y librerías adicionales de Python y MySQL:
|
1 |
$ sudo apt install python3-dev libmysqlclient-dev default-libmysqlclient-dev |
Una vez completada la instalación, use pip para instalar el módulo de Python mysqlclient. Puede generar algunos mensajes de error que se pueden ignorar:
|
1 |
$ pip install mysqlclient |
-
Configuración de una base de datos dedicada
El siguiente paso es configurar una base de datos dedicada y un usuario de base de datos para nuestra aplicación Django. Inicie la consola de MySQL como el usuario root :
|
1 |
$ sudo mysql -u root |
Para verificar todas las bases de datos disponibles actualmente, ejecute la siguiente consulta:
|
1 |
$ SHOW DATABASES; |
Creemos una base de datos dedicada para nuestra aplicación Django. Dele un nombre apropiado que sea coherente con el nombre del proyecto:
|
1 |
$ CREATE DATABASE demoapp_data; |
A continuación, verifique la creación:
|
1 |
$ SHOW DATABASES; |
Ahora, cree un usuario de MySQL dedicado. Configuraremos este usuario como el propietario de la base de datos. La aplicación Django utilizará las credenciales de este usuario para trabajar con la base de datos MySQL:
|
1 |
$ CREATE USER 'demoapp_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
Otorgue al usuario demoapp_user todos los permisos sobre la base de datos demoapp_data:
|
1 |
$ GRANT ALL ON demoapp_data.* TO 'demoapp_user'@'%'; |
Para que los cambios de permisos surtan efecto, recargue las MySQL grant tables:
|
1 |
$ FLUSH PRIVILEGES; |
La base de datos ya está lista para conectarse a la aplicación Django.
-
Conexión de la base de datos a la aplicación Django
Finalmente, configuraremos la aplicación Django para usar la base de datos para el almacenamiento de datos. Abra el script de configuración settings.py:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
Desplácese hacia abajo hasta la entrada DATABASES e introduzca el siguiente código:
|
1 2 3 4 5 6 7 8 |
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': { 'read_default_file': '/etc/mysql/my.cnf', }, } } |
Guarde el archivo y cierre el editor. El siguiente paso es configurar el archivo de configuración descrito en el código anterior. Use sudo para abrir el archivo de texto en la ubicación descrita:
|
1 |
$ sudo nano /etc/mysql/my.cnf |
Este archivo de configuración contendrá información sobre la base de datos dedicada a Django y el usuario que creamos en el servidor MySQL. Agregue las siguientes líneas al final del archivo:
|
1 2 3 4 5 |
[client] database = demoapp_data user = demoapp_user password = password123 default-character-set = utf8 |
Para que los cambios surtan efecto, tenemos que reiniciar el servidor MySQL:
|
1 2 |
$ sudo systemctl daemon-reload $ sudo systemctl restart mysql |
-
Probando la conexión a MySQL
Ahora es el momento de verificar si la conexión a MySQL funciona correctamente. Si el servidor Django se ejecuta sin problemas, entonces la conexión funciona bien. De lo contrario, algo anda mal. Primero, aplique todos los cambios realizados en el proyecto Django:
|
1 |
$ python manage.py migrate |
Ahora, muévase al siguiente directorio del proyecto e inicie el servidor Django:
|
1 2 |
$ cd ~/myDemoApp/demoapp $ python manage.py runserver <server_ip_address>:8000 |
A continuación, intente acceder al servidor desde un navegador web:
|
1 |
$ http://<server_ip_address>:8000 |
¡Voila! Hemos llegado con éxito a la página de éxito de Django. Esto también verifica que la conexión a MySQL funciona correctamente. Una vez finalizada la tarea, puede salir de forma segura del entorno virtual:
|
1 |
$ deactivate |
Reflexiones finales
En esta guía, ha aprendido los conceptos básicos para combinar Django y MySQL. Creamos una aplicación Django y mostramos cómo conectarla con una base de datos MySQL. La magia reside en el archivo de configuración de Django settings.py. También modificamos algunas configuraciones básicas como ALLOWED_HOSTS y TIME_ZONE. Django es increíblemente flexible. Además de MySQL, también es compatible con otros servidores SQL como PostgreSQL, motores de servidor como Nginx, etc.
También puede consultar nuestras guías sobre las mejores prácticas para instalar, configurar y trabajar con Django:
- Instalación del framework web Django en Ubuntu 20.04
- Configuración de Django con PostgreSQL, Nginx y Gunicorn en Ubuntu 20.04
- Creación de modelos de Django: un tutorial
¡Feliz informática!





Comentarios
Aún no hay comentarios. Sea el primero.