Quem sou eu

Minha foto

Formado em Computação, desenvolvedor web, interessado em tecnologia, metaleiro e um gamer inveterado.

Pesquisar

sexta-feira, 23 de setembro de 2011

Plugins Úteis - South - Uma app para Django muito útil para gerenciamento do Banco de Dados


South

South é uma aplicação do django responsável por gerenciar as modificações feitas no projeto que influenciam em criação/edição/remoção de tabelas e/ou campos no banco de dados.

Para instalar o south no ambiente:
pip install south
adicionar ele na installed_apps

Com o South NÃO DEVE-SE USAR o syncdb do django para criação das tabelas de suas apps. Apenas deve ser rodado o syncdb para criação das tabelas referente as aplicações padrões do settings e mais a do south. 

Para criação das tabelas de uma nova aplicação utilizar:
python manage.py schemamigration NOME_DA_APP --initial

Para criação de todas as tabelas do projeto, basta omitir o nome da app.

Os comandos acima vão criar apenas os schemas de migração, nada será alterado no banco de dados. Para aplicar as migrações deve-se utilizar o comando:
python manage.py migrate NOME_DA_APP

Para todos os esquemas, basta omitir o nome da app.

Depois da situação inicial criada, caso haja necessidade de adicionar/remover campos nos models, utilizar seguinte comando para sincronizar os schemas:
python manage.py schemamigration NOME_DA_APP --auto

E para aplicar as migrações da mesma forma descrita anteriormente:
python manage.py migrate NOME_DA_APP

Caso deseje aplicar o South em algum projeto que não tenha, e as tabelas já tenham sido criadas, basta instalar o South como descrito acima, e utilizar o comando:
python manage.py convert_to_south NOME_DA_APP 


O south cria no banco de dados algumas tabelas para controle do que já foi migrado para não tentar fazer novamente, caso deseje informar o south que aquela migração já tenha sido realizada, possivelmente para corrigir algum problema, basta utilizar o comando:
python manage.py migrate --fake

Desta forma ele vai apagar as migrações contidas nos schemas gerados e colocar no banco como realizada, sem fazer nenhuma alteração no banco.