Dump via Django

Ah… abstração de camada! Eis a grande vantagem de arquitetura em camadas! Pois é, com o django não poderia ser diferente.

Imagine você, desenvolvedor, que precisa trazer para perto de você o banco daquele site que você está desenvolvendo… Mas não sabe nada a respeito de banco de dados, como fazer um dump, clone, outra visão, backup. Ou você quer algo rápido python-like.

O Django tem duas ferramentas campeãs, o dumpdata e o loaddata.

O dumpdata extrai o banco e o loaddata carrega.

Essas ferramentas podem, e devem, por simplicidade, usadas com o manage.py de seu site. Se você não quiser, você deve usar o django-admin.py. Configurando propriamente a variavel de ambiente DJANGO_SETTINGS_MODULE ou o argumento --settings com  o caminho para o seu settings.py.

Mas vamos considerar que você está no diretório do seu projeto e você escolheu usar o manage.py. Ah sempre considero que você está no linux.

dumpdata

Para usar o dumpdata é simples:

python manage.py dumpdata > arquivo.dump

simples não?! Do jeito que está, o comando salva todo o banco num arquivo.dump . Sem fazer quaisquer destinções.

Mas quer fazer o  dump de somente uma aplicação, não tem problema:

python manage.py dumpdata aplicacao > aplicacao.dump

Mas eu quero mais de uma aplicação, mas não todas. Não tem problema:

python manage.py dumpdata aplicacao1 aplicacao2 > aplicacoes.dump

Ah, mas eu só quero de uma classe que eu botei no arquivo modules.py ( Você sabe que as classes definidas nesse arquivo são persistidas ).  Porque não disse antes?

python manage.py dumpdata aplicacao.Modulo> aplicacoes_modulo.dump

Ainda é possível exportar como formato json, xml, yaml. Basta usar a opção –export=FORMATO.

Acho que não tem mais situações… agora é hora de carregar!

loaddata

A essa é facinho! Basta você fazer:

python manage.py loaddata arquivo_que_vc_gerou

Pronto! Fácil?!

Ainda é possível exportar como formato json, xml, yaml

Você pode ver algumas opções nos links que eu indiquei (olhe no início do post).  Eu enfrentei dificuldades com o tabelas que tinham muitas entradas (+55 mil).  Então acredito que a ferramenta tenha essa limitação com bancos grandes.  Funcionou com Mysql, sqlite3 e o Microsoft SqlServer.

This entry was posted in Django, Python, linux and tagged , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>