Python Dominicana 059: Django Migrations
-
Upload
rafael-belliard -
Category
Technology
-
view
484 -
download
1
Transcript of Python Dominicana 059: Django Migrations
@rebelliard
El requerimiento perfecto1. 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
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
@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
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
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