Django dumpdata e loaddata

comando dumpdata

  • É um comando de gerenciamento django, que pode ser usado para fazer backup (exportar) suas instâncias de modelo ou banco de dados inteiro

dumpdata para despejo básico de banco de dados

  • O comando a seguir irá despejar todo o banco de dados em um db.jsonarquivo
./manage.py dumpdata > db.json

dumpdata para aplicativo específico de backup

  • O comando a seguir irá despejar o conteúdo do adminaplicativo django no admin.jsonarquivo
./manage.py dumpdata admin > admin.json

dumpdata para tabela específica de backup

  • O comando a seguir irá despejar apenas o conteúdo da admin.logentrytabela django
./manage.py dumpdata admin.logentry > logentry.json
  • O seguinte comando irá despejar o conteúdo na auth.usertabela django
./manage.py dumpdata auth.user > user.json

dumpdata (–exclude)

  • Você pode usar a opção para especificar aplicativos / tabelas que não precisam ser despejados--exclude

  • O comando a seguir irá despejar todo o banco de dados sem incluir o conteúdo da tabelaauth.permission

./manage.py dumpdata --exclude auth.permission > db.json

dumpdata (–indent)

  • Por padrão, dumpdataproduzirá todos os dados em uma única linha. Não é fácil para os humanos lerem

  • Você pode usar a opção de imprimir a saída com uma série de espaços de recuo--indent

./manage.py dumpdata auth.user --indent 2 > user.json
  • O exemplo de saída do comando acima está abaixo

Cenário

dumpdata (–format)

  • Por padrão, dumpdata formatará sua saída em JSON

  • Você pode especificar o formato usando a opção –format

  • Suporte de comando para os seguintes formatos (formatos de serialização)

  1. json
  2. xml
  3. yaml
./manage.py dumpdata auth.user --indent 2 --format xml > user.xml
  • O comando acima gera um arquivo xml (user.xml)

Cenário

comando loaddata

  • Este comando pode ser usado para carregar os fixtures (dumps do banco de dados) no banco de dados
./manage.py loaddata user.json
  • Este comando irá adicionar o conteúdo do arquivo no banco de dadosuser.json

Restaurar banco de dados novo

  • Quando você faz backup de todo o banco de dados usando o dumpdatacomando, ele fará backup de todas as tabelas do banco de dados

  • Se você usar este dump de banco de dados para carregar o banco de dados novo (em outro projeto django), pode haver causas IntegrityError(se você estiver loaddatano mesmo banco de dados, funciona bem)

  • Para corrigir esse problema, certifique-se de fazer backup do banco de dados excluindo as tabelas contenttypeseauth.permissions

./manage.py dumpdata --exclude auth.permission --exclude contenttypes > db.json
  • Agora você pode usar o loaddatacomando com um novo banco de dados
./manage.py loaddata db.json