Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python Dominicana 059: Django Migrations

Python Dominicana 059: Django Migrations

* Conceptos esenciales. ¿Qué problemas resuelve Django Migrations?
* Bases de datos: Peculiaridades que debemos saber al implementar la librería según nuestro motor de base de datos.
* Un vistazo a los componentes internos que conforman Django Migrations.

* Presentación compartida el 2016-05-25 en la comunidad de Python Dominicana.
* https://www.facebook.com/events/1787153718174739/

Avatar for Rafael E. Belliard

Rafael E. Belliard

May 25, 2016

Other Decks in Programming

Transcript

  1. @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.
  2. @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…
  3. @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
  4. @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
  5. @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
  6. @rebelliard Oracle 1. Sintaxis SQL distinta 2. Reglas de nombres

    problemáticas 3. Limitaciones con TextField
  7. @rebelliard field.deconstruct() Editor de esquemas ModelOptions.apps Lector / Grafo Operaciones

    Ejecutor Optimizador Autodetector Estado Esquema Migraciones Separación lógica
  8. @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
  9. @rebelliard Operaciones incluídas AddModel DeleteModel AddField RenameField DeleteField RenameModel AlterModelOptions

    AlterModelTable AlterField AlterUniqueTogether AlterIndexTogether RunSQL RunPython
  10. @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.”