Este repositorio contiene un proyecto especializado en el desarrollo Backend con Django, enfocado en la gestión avanzada del ciclo de vida de bases de datos a través de su ORM. El sistema implementa estrategias robustas para el control de versiones de esquemas mediante migraciones, automatización de llenado de datos (data seeding), y flujos seguros de respaldo y recuperación de información en un entorno controlado.
- Control de Versiones de Base de Datos: Uso avanzado del sistema de migraciones de Django para la creación, modificación y evolución estructural de tablas sin pérdida de consistencia.
- Estrategia de Recuperación de Datos: Implementación de mecanismos de respaldo (backup) y restauración (restore) de estados de la base de datos mediante comandos nativos de Django (
dumpdatayloaddata). - Modelado de Datos Avanzado: Definición de esquemas relacionales, restricciones de integridad, relaciones (One-to-Many / Many-to-Many) y optimización de consultas a través del ORM.
- Sembrado de Datos (Seeding): Automatización del proceso de carga de datos iniciales o de prueba utilizando archivos de configuración estructurados (JSON/YAML).
- Framework Principal: Django 4.x / 5.x (Python)
- ORM: Django ORM
- Base de Datos: [Ejemplo: PostgreSQL / SQLite]
- Formatos de Serialización: JSON
El núcleo de este desarrollo consistió en simular un escenario real de mantenimiento y contingencia en servidores de producción:
- Evolución del Esquema (Migraciones): Se gestionaron flujos de cambios estructurales en los modelos de Django, garantizando que el paso de esquemas antiguos a nuevos se realizara de forma fluida mediante los comandos
makemigrationsymigrate. - Consistencia en la Recuperación: Se diseñó una arquitectura donde el estado completo del sistema de base de datos puede ser serializado a un archivo JSON plano, permitiendo una recuperación ante fallos (Disaster Recovery) inmediata que restaura la integridad de las relaciones entre tablas.
- Aislamiento de Entornos: Configuración orientada a la separación de datos de desarrollo y producción para ejecutar pruebas de migración seguras.
python manage.py makemigrations- Generación de los archivos de migración basados en los cambios del modelo.python manage.py migrate- Aplicación e impacto de los cambios estructurales en el motor de base de datos.python manage.py dumpdata > backup.json- Serialización y respaldo de la base de datos completa.python manage.py loaddata backup.json- Proceso de recuperación, parseo e inyección de datos respaldados.
Sigue estos pasos para desplegar el entorno de pruebas localmente:
-
Clonar el repositorio:
git clone [https://github.com/longaresf/django-database-migrations.git](https://github.com/longaresf/django-database-migrations.git)
-
Ingresar al directorio: Bash cd django-database-migrations
-
Crear y activar un entorno virtual (Recomendado): Bash python -m venv venv source venv/bin/activate # En Windows usa: venv\Scripts\activate
-
Instalar dependencias: Bash pip install -r requirements.txt
-
Ejecutar migraciones y restaurar datos: Bash python manage.py migrate python manage.py loaddata [nombre_del_archivo_de_respaldo].json
-
Iniciar el servidor de desarrollo: Bash python manage.py runserver
✒️ Créditos y Autoría
Francisco Longares - Desarrollador Backend Python - longaresf
Este proyecto representa la resolución de los hitos avanzados prácticos del programa de formación Full Stack Python en Desafío Latam.