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

Django Migrations v1.0

Django Migrations v1.0

Que Django é fantástico nós sabemos, mas nem tudo são flores na terra dos poneis cor-de-rosa. O ORM do Django tem algumas limitações e uma das principais (por enquanto) é que ele não consegue fazer ALTER TABLE. Na prática, suas tabelas não evoluem junto com seus models. Se no meio de um projeto, sua aplicação evoluir ao ponto de precisar de uma remodelagem, usando o ORM puro, você teria que descer ao nível do SQL para alterar suas tabelas ou dar DROP no banco e rodar o syncdb outra vez. Mas graças a Andrew Godwin, Django Core Developer, temos uma ferramenta que cuida de todas as migrações para nós, o South. Uso obrigatório para os desenvolvedores mais experientes, o south ainda é pouco conhecido para aqueles que estão começando a desenvolver com Django. Vamos falar sobre migrações, o que esperar da nova versão do south e sobre o futuro das migrações com Django, o django.db.migrations, que o próprio Andrew está desenvolvendo.

Renato dos Santos Oliveira

September 01, 2013
Tweet

More Decks by Renato dos Santos Oliveira

Other Decks in Programming

Transcript

  1. Quem sou eu... • Co-fundador da Labcodes • Organizador da

    Python Nordeste 2013 • Open source fanboy • Windows hatter • Já troquei e-mails com Guido Van Rossum (Morram de inveja)
  2. Pequena pesquisa... • Quem daqui trabalha com django? • Quem

    já precisou alterar um model no decorrer do desenvolvimento? • Quem NUNCA precisou?
  3. South • Desenvolvido por Andrew Godwin em 2008 • App

    de migração de dados e schemas para aplicações Django
  4. Cenário 1 • startproject • Adicione o south no INSTALLED_APPS

    • syncdb • Crie sua app e adicione ao INSTALLED_APPS • python manage.py schemamigration nome_app --initial • python manage.py migrate nome_app • alterações na app • python manage.py schemamigration nome_app --auto • python manage.py migrate nome_app
  5. Cenário 2 • Cansei de quebrar o banco • Adiciona

    ‘south’ no INSTALLED_APPS • para cada app ◦ python manage.py convert_to_south myapp
  6. Cenário 2 Mas isso só vai funcionar para a máquina

    que primeiro fizer as migrações
  7. Cenário 2 • Commita a migração • Para cada máquina

    que tenha a base de dados ◦ Para cada app ▪ python manage.py migrate myapp --fake
  8. ?

  9. 42