SlideShare una empresa de Scribd logo
@rebelliard
Django Migrations
@rebelliard
Rafael Belliard
rebelliard.com
Software Developer
@rebelliard
“Los requerimientos
siempre están mal”
@rebelliard
El requerimiento perfecto
1. El cliente debe entenderlo.
2. El cliente debe mencionarlo.
3. El cliente debe explicarlo correctamente.
4. Debe ser comunicado al programador sin
corrupción.
5. Debe ser entendido por el programador.
6. Debe diseñarse un esquema de datos
adecuado.
7. Debe implementarse correctamente.
@rebelliard
La aplicación y el motor de base de
datos no deben ser “solo amigos”
Idealmente, esta relación debería estar
abierta a otras bases de datos…
@rebelliard
Django Migrations
@rebelliard
Concepto
“Hola mundo”
Bases de datos
¿Cómo funciona?
Mirando hacia atrás
@rebelliard
Django Migrations
Desarrollo iterativo e incremental (“ágil”)
Sistematización del esquema de datos
Sincronización entre la aplicación y el
esquema de datos
Control de versiones sobre el esquema
Independencia* del motor de datos
Python Dominicana 059: Django Migrations
@rebelliard
“Hola mundo”
@rebelliard
Definición del modelo
@rebelliard
Generamos la migración inicial
@rebelliard
Alteración del modelo
@rebelliard
Generamos una nueva migración
@rebelliard
Comandos disponibles
migrate
makemigrations
showmigrations
sqlmigrate
@rebelliard
Bases de datos
@rebelliard
Bases de datos
PostgreSQL
MySQL
SQLite
Oracle
@rebelliard
PostgreSQL
1. Nada de qué preocuparse.
2. DDL transaccional.
Advertencia al agregar columnas:
null=True
@rebelliard
MySQL
1. No soporta un DDL transaccional
2. No tiene restricciones CHECK
3. Combina UNIQUE e INDEX
4. ¡Reescrituras completas!
5. Nombres muy pequeños
@rebelliard
SQLite
1. Alteración de esquemas nulo
2. Terrible para el diseño iterativo
3. No está recomendado en producción
4. Delicado aún para desarrollo
@rebelliard
Oracle
1. Sintaxis SQL distinta
2. Reglas de nombres problemáticas
3. Limitaciones con TextField
@rebelliard
¿Microsoft SQL Server?
¿Cassandra?
¿Firebird?
¿ODBC?
@rebelliard
Ármalo tú mismo…
@rebelliard
field.deconstruct()
Editor de esquemas
ModelOptions.apps Lector / Grafo
Operaciones
Ejecutor
Optimizador
Autodetector
Estado
Esquema Migraciones
Separación lógica
@rebelliard
Migración #1
Operación Operación
Migración #2
Operación Operación
Estado Estado Estado Estado Estado
Operación
Estado Estado
AddModel
Sin modelos Un modelo
@rebelliard
Operaciones incluídas
AddModel DeleteModel
AddField RenameFieldDeleteField
RenameModel
AlterModelOptions AlterModelTable AlterField
AlterUniqueTogether AlterIndexTogether
RunSQL RunPython
@rebelliard
Mirando hacia atrás
Compatibilidad con aplicaciones existentes
@rebelliard
Simular
migraciones
python manage.py makemigrations
python manage.py migrate --fake-initial
Bases de datos existentes
@rebelliard
South es
ignorado
python manage.py makemigrations
python manage.py migrate --fake-initial
Migrando desde South
@rebelliard
Principios del Manifiesto Ágil
“Nuestra mayor prioridad es satisfacer al
cliente mediante la entrega temprana y
continua de software con valor.”
“Aceptamos que los requisitos cambien,
incluso en etapas tardías del desarrollo.”

Más contenido relacionado

PDF
El arte oscuro de estimar v3
PDF
STM on PyPy
PPT
Introduccio a python
PDF
10 cosas de rails que deberías saber
PDF
#DataBeers: Inmersive Data Visualization con Oculus Rift
PDF
Tidy vews, decorator and presenter
ODP
Conferencia Big Data en #MenorcaConnecta
PPTX
Madrid SPARQL handson
El arte oscuro de estimar v3
STM on PyPy
Introduccio a python
10 cosas de rails que deberías saber
#DataBeers: Inmersive Data Visualization con Oculus Rift
Tidy vews, decorator and presenter
Conferencia Big Data en #MenorcaConnecta
Madrid SPARQL handson

Destacado (19)

PDF
Volunteering assistance to online geocoding services through a distributed kn...
PDF
BDD - Test Academy Barcelona 2017
PDF
The emerging world of mongo db csp
PPT
Big data amb Cassandra i Celery ##bbmnk
ODP
Python 101
ODP
Transparencias taller Python
PDF
A Folksonomy of styles, aka: other stylists also said and Subjective Influenc...
PDF
Knowing your Garbage Collector / Python Madrid
PDF
Python and MongoDB
PDF
Knowing your garbage collector - PyCon Italy 2015
ODP
TDD in the Web with Python and Django
PPT
Presentacion scraping
PDF
Grunt.js introduction
PDF
PyQgis gpul-lab Univerisity of A Coruña 20160413
PDF
Charla mspba
PDF
Guía de Python
PDF
Bucles con Scratch
PDF
Geospatial and MongoDB
Volunteering assistance to online geocoding services through a distributed kn...
BDD - Test Academy Barcelona 2017
The emerging world of mongo db csp
Big data amb Cassandra i Celery ##bbmnk
Python 101
Transparencias taller Python
A Folksonomy of styles, aka: other stylists also said and Subjective Influenc...
Knowing your Garbage Collector / Python Madrid
Python and MongoDB
Knowing your garbage collector - PyCon Italy 2015
TDD in the Web with Python and Django
Presentacion scraping
Grunt.js introduction
PyQgis gpul-lab Univerisity of A Coruña 20160413
Charla mspba
Guía de Python
Bucles con Scratch
Geospatial and MongoDB
Publicidad

Similar a Python Dominicana 059: Django Migrations (20)

PDF
Nuestro código habla, ¿Qué nos dice? - Codemotion 2016
PDF
Evolución Android: Del Framework a la supervivencia del más fuerte
PPTX
Cream code & front performance
PPTX
Daniel rabinovich php conference
PDF
Charla - MVP con django (beta beers)
PDF
Re evolución robótica
PDF
Desarrollo de Mobile Web Apps
PPT
Herramientas seo clinic
PPTX
Visteme con 'Clean Architecture' que tengo prisas
PDF
CURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOL
PPTX
vOpenvOpenUy: El misterioso CQRS
PDF
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
PPTX
¿Cómo será el programador del futuro? ¿Tendremos trabajo?
PDF
Html5 para móviles
PDF
Ciencia de datos aplicada al SEO
PPTX
Cid - Analítica Web
PPTX
PDF
Betabeers BCN
PDF
08-Metadatos_Ontologias_y_Web_Semantica.pdf
Nuestro código habla, ¿Qué nos dice? - Codemotion 2016
Evolución Android: Del Framework a la supervivencia del más fuerte
Cream code & front performance
Daniel rabinovich php conference
Charla - MVP con django (beta beers)
Re evolución robótica
Desarrollo de Mobile Web Apps
Herramientas seo clinic
Visteme con 'Clean Architecture' que tengo prisas
CURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOL
vOpenvOpenUy: El misterioso CQRS
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
¿Cómo será el programador del futuro? ¿Tendremos trabajo?
Html5 para móviles
Ciencia de datos aplicada al SEO
Cid - Analítica Web
Betabeers BCN
08-Metadatos_Ontologias_y_Web_Semantica.pdf
Publicidad

Último (20)

PDF
Ronmy José Cañas Zambrano - Potenciando la tecnología en Venezuela.pdf
PDF
TRABAJO DE TECNOLOGIA.pdf...........................
PDF
capacitación de aire acondicionado Bgh r 410
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PPTX
Historia Inteligencia Artificial Ana Romero.pptx
PPTX
El uso de las TIC en la vida cotidiana..
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PPTX
la-historia-de-la-medicina Edna Silva.pptx
PDF
CyberOps Associate - Cisco Networking Academy
PPTX
Presentación de Redes de Datos modelo osi
PPTX
Curso de generación de energía mediante sistemas solares
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PDF
Maste clas de estructura metálica y arquitectura
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PDF
MANUAL de recursos humanos para ODOO.pdf
PDF
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PPTX
Presentacion de Alba Curso Auditores Internos ISO 19011
PDF
Influencia-del-uso-de-redes-sociales.pdf
PDF
Diapositiva proyecto de vida, materia catedra
Ronmy José Cañas Zambrano - Potenciando la tecnología en Venezuela.pdf
TRABAJO DE TECNOLOGIA.pdf...........................
capacitación de aire acondicionado Bgh r 410
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Historia Inteligencia Artificial Ana Romero.pptx
El uso de las TIC en la vida cotidiana..
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
la-historia-de-la-medicina Edna Silva.pptx
CyberOps Associate - Cisco Networking Academy
Presentación de Redes de Datos modelo osi
Curso de generación de energía mediante sistemas solares
Power Point Nicolás Carrasco (disertación Roblox).pptx
Maste clas de estructura metálica y arquitectura
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
MANUAL de recursos humanos para ODOO.pdf
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
historia_web de la creacion de un navegador_presentacion.pptx
Presentacion de Alba Curso Auditores Internos ISO 19011
Influencia-del-uso-de-redes-sociales.pdf
Diapositiva proyecto de vida, materia catedra

Python Dominicana 059: Django Migrations