Como usar south

¡Hola a todos!

Escribo este post para la empresa en la que ahora trabajo ( Brandigital ), como para documentar un poco el proceso que implica poner nuestra base de datos bajo control de versiones usando mercurial y #django-south. El proceso es relativamente sencillo. Este tutorial supone que tenemos una base de datos ya creada, y que ya leimos el manual de south respecto a la instalación, su uso y como convertir una aplicación ya creada a south.

Comprendiendo lo básico

South tiene 2 comandos que debemos saber: schemamigration y migrate. Sus usos mas comunes son los siguientes:

# identificar todos los cambios hechos en los modelos y escribirlos al disco duro.

root@alice# python manage.py schemamigration app_name --auto
 - Deleted field nombreTrue on web.CategoriaWidget
Created 0005_auto__del_field_categoriawidget_nombreTrue.py. You can now apply this migration with: ./manage.py migrate web

# aplicar los cambios

root@alice# python manage.py migrate app_name
Running migrations for web:
 - Migrating forwards to 0005_auto__del_field_categoriawidget_nombreTrue.
 > web:0005_auto__del_field_categoriawidget_nombreTrue
 - Loading initial data for web.

Aplicando cambios en los modelos en una versión y reflejándolos en el resto

Como primer paso tenemos que hacer un cambio en los modelos en este caso, quité un field llamado nombreTrue del modelo CategoriaWidget. Una vez hecho esto, debemos decirle a south que por favor nos reconozca los cambios

root@alice# python manage.py schemamigration web --auto
 - Deleted field nombreTrue on web.CategoriaWidget
Created 0005_auto__del_field_categoriawidget_nombreTrue.py. You can now apply this migration with: ./manage.py migrate web

Esto hace que los cambios se apliquen en el disco duro y sean vistos por nuestro sistema de control de versiones. Una vez hecho esto, tenemos que envíar nuestros cambios al repositorio. Nosotros usamos mercurial.

root@alice# hg add 
root@alice# hg commit -m 'testeando south'
root@alice# hg push

Una vez hecho esto, nos conectamos por ssh a la pc bob, y obtenemos la información desde el repositorio.

root@bob# hg pull 
root@bob# hg update 

Los cambios que tendrían que hacerse en la PC de Alice son los mismo que en la de bob, por lo que solo tenemos que aplicar los cambios que ha calculado el schemamigrate de Alice.

root@alice# python manage.py migrate web
Running migrations for web:
 - Migrating forwards to 0005_auto__del_field_categoriawidget_nombreTrue.
 > web:0005_auto__del_field_categoriawidget_nombreTrue
 - Loading initial data for web.

De esta misma manera podemos llevar los cambios a staging / producción.

¡Espero que les sirva! En realidad es bastante sencillo, y me parece que nos puede llegar a servir bastante.

Un abrazo,
Pedro

Agrega un comentario! los comentarios se aprueban automaticamente

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s