Tutorial básico de django south

Posted: octubre 24th, 2012 | Author: | Filed under: Sin categoría | Tags: , , , , | 3 Comments »

South es una app de django que permite modificar la estructura de la base de datos de una aplicación django cuando cambiamos el modelo (models.py).

El comando syncdb sólo crea nuevas tablas, pero no modifica tablas existentes, así que si en el modelo de una aplicación renombramos un campo de una tabla existente syncdb no realizará ese cambio en la base de datos. A este tipo de cambios en la base de datos se les denomina “migración del esquema” y es de lo que se encarga South.

Instalación

  1. pip install south
  2. Agregar “south” a INSTALLED_APPS
  3. Ejecutar syncdb antes de crear nuestros propios modelos. Está será la última (y única) vez, que necesitamos ejecutar este comando
    manage.py syncdb

Usar south en un una app nueva

  1.  Crear la aplicación, y empezar a rellenar el models.py
  2. Crear el script de migración inicial
    python manage.py schemamigration app_name --initial
  3. Hacer los cambios en la bbdd
    python manage.py migrate app_name

Usar south en una app ya creada

python manage.py convert_to_south app_name

En el caso de que haya otros desarrolladores en el equipo y cada cual esté usando su propia instancia de la base de datos, el resto de desarrolladores ejecutará:

python manage.py migrate app_name --fake

Migración de modelos

  1. Modificamos el models.py de nuestra aplicación
  2. Crear un nuevo script de migración
    python manage.py schemamigration app_name --auto
  3. Aplicar la migración a la bbdd
    python manage.py migrate app_name

Como funciona

Se puede decir que South funciona en varios niveles de abstracción disintos.

  • Añade una tabla en la base de datos que mantiene el estado actual de la base de datos. Es decir, guarda que migraciones se han aplicado.
  • Crea un directorio en la applicación, donde guarda para cada migración un fichero (script) con la información necesaria para realizarla
  • Añade varios comandos al manage.py

Los ficheros de migración generados en deben subirse al repositorio para que el resto de los desarrolladores pueda también realizar la migración.

Referencias


3 Comments on “Tutorial básico de django south”

  1. 1 Rafa said at 9:52 on enero 9th, 2014:

    En el punto 2 de la migración de modelos ya existentes, en ubuntu la sintaxis es:

    python manage.py schemamigration app_name –auto

    Es decir, “–” en lugar de “-”

  2. 2 fpuga said at 15:26 on enero 11th, 2014:

    Gracias por la corrección Rafa. He actualizado el artículo y he marcado los comandos con Code Colorer para que se vea más claro.

  3. 3 Killua said at 15:18 on enero 12th, 2014:

    tengo un problema , al momento de hacer syncdb me sale una exception de mysql , Incorrect string value: ‘\xE9rica …’ for column ‘Value” at row 1 , si alguien me puede ayudar …


Leave a Reply