Executando verificação de segurança...
6

Como Exportar e Importar Dados no Django: Um Guia Prático

Uma solução prática

Vamos a um exemplo clássico, imaginando um sistema tipo Blog construído com Django. Você está desenvolvendo um projeto, e nele, uma das tabelas se chama 'categoria', que vai armazenar as categorias dos posts do seu blog. Se este fosse o meu blog, já teria algumas categorias padrões, como: Django, Python, JavaScript, Programação.
Existem algumas opções para criar essas categorias, seja na área admin do Django ou na interface customizada. Considerando que estou desenvolvendo no meu PC localmente, ao fazer o deploy do meu blog, não quero precisar cadastrar essas categorias novamente. Imagina se temos 30, 60 categorias - seria ideal que esses dados específicos estivessem idênticos tanto no meu ambiente local quanto no servidor de produção.

Django Fixture

O Django tem um recurso chamado "fixture". Uma fixture é uma coleção de arquivos que contêm o conteúdo serializado do banco de dados, podendo ser em formato JSON ou XML. Vamos utilizar um arquivo JSON. Ele serve para dar uma carga inicial de dados no sistema ou apenas produzir dados para testes.

1 - Como Criar uma Fixtures

Exportar Dados de um App Inteiro: Execute o comando python manage.py dumpdata auth. Todos os dados das tabelas do app auth serão exibidos no terminal em formato de JSON. Para uma visualização mais amigável, você pode trazer esses dados já indentados com o comando

python manage.py dumpdata auth --indent 2.

Melhor ainda, você pode exportar esses dados identados diretamente para um arquivo JSON, facilitando o deploy:

python manage.py dumpdata auth --indent 2 > auth.json

Este comando criará na raiz do seu projeto um arquivo auth.json com os dados de todas as tabelas do banco identados.

2 - Exportar Dados de uma Tabela do Meu App

É bem parecido com o que já mencionamos, mas aqui basta especificar o model do qual você quer exportar os dados, como por exemplo:

python manage.py dumpdata auth.user --indent 2 > user.json

O auth.user após o dumpdata indica a exportação dos dados da tabela user do app auth para o arquivo user.json. Simples, não?
Agora, para exportar dados de vários apps e colocar tudo em uma pasta chamada "fixtures", crie essa pasta na raiz do seu projeto e execute o seguinte comando:

python manage.py dumpdata auth app1 app2 --indent 2 > fixtures/fake_data.json

3 - Como Carregar uma Fixture para o Banco?

O Django irá procurar fixtures em três locais:

  • No diretório fixtures de cada aplicativo instalado.
  • Em qualquer diretório nomeado na opção FIXTURE_DIRS no arquivo de configuração.
  • No caminho literal nomeado pela fixture.

O Django carregará qualquer fixture que encontrar nesses locais com o nome correspondente. Ele buscará especificamente o arquivo com o nome indicado no comando executado. Por exemplo:

python manage.py loaddata fake_data.json

4 - Conclusão

Com esses passos, você consegue exportar dados iniciais do seu ambiente de desenvolvimento ou dados para testes diretamente para o servidor de produção, agilizando seu processo de deploy e testes. Utilizar fixtures no Django é uma prática eficiente que economiza tempo e garante a consistência dos dados entre diferentes ambientes de desenvolvimento.

Carregando publicação patrocinada...