Qual é a melhor maneira de migrar dados em Django

votos
27

Depois de fazer algumas mudanças em meus modelos (por exemplo. Novo campo em um modelo e um novo modelo) qual é a melhor maneira de refletir essas alterações para meu banco de dados povoada?


PS: Eu queria ver muitas soluções em um só lugar nominal. Aparentemente mais soluções já estão listados aqui .

Publicado 06/10/2008 em 21:14
fonte usuário
Em outras línguas...                            


6 respostas

votos
23

Outra técnica é usar os argumentos DumpData e loaddata para manage.py, matando seu banco de dados in-between:

  1. python manage.py dumpdata > dump.json
  2. Com uma ferramenta externa, retirar as tabelas afetadas, ou matar toda a db
  3. python manage.py loaddata dump.json

Veja docs manage.py para mais.

Respondeu 16/10/2008 em 19:31
fonte usuário

votos
16

Eu tenho uma pergunta semelhante aqui e tem muito poucas respostas.

Há um monte de maneiras de fazer isso, como fazer manualmente o dumping eo recarregamento com SQL, usando dispositivos elétricos ou usar um dos "emergentes" pacotes esquema de evolução para Django:

Respondeu 06/10/2008 em 22:23
fonte usuário

votos
3

Django agora tem suas próprias migrações internas, documentados em:

https://docs.djangoproject.com/en/dev/topics/migrations/

Respondeu 11/09/2014 em 23:07
fonte usuário

votos
3

Depende do escopo das mudanças. Se for além de um ALTER, você está fazendo uma grande cirurgia. Faça backups do modelo, bem como banco de dados para que você possa voltar.

Minha preferência é para colocar o seu novo modelo (revisado, corrigido, expandido) como um novo aplicativo. Não vai ter nada de ou URL, apenas um modelo.

  1. Criando o novo modelo como uma nova aplicação. Criar testes, só para ter certeza que funciona.
  2. syncdb para construir esta aplicação provisória do novo modelo.
  3. Escrever um utilitário pequeno one-time para consultar o seu modelo antigo, e carregar o seu novo modelo. Você pode querer experimentar isso em SQL puro. Eu prefiro escrever uma consulta simples, criar e salvar loop.
  4. Depois que o novo modelo é carregado, você pode despejar isso em um arquivo JSON.

Uma vez que você puxou os dados fora do seu modelo antigo, você pode reconstruir seu DB no formato novo preferido.

  1. Mova o novo modelo em seu aplicativo existente.
  2. Largue as versões antigas tabelas do aplicativo.
  3. syncdb para construir as novas tabelas.
  4. Carregar o arquivo JSON com os dados.
Respondeu 06/10/2008 em 21:23
fonte usuário

votos
2

Olhe com manage.py sqlall quais são os parâmetros para as novas colunas e adicioná-los manualmente no seu banco de dados com ALTER TABLE. Desta forma, você não tem que refazer seu banco de dados; Ele requer algum conhecimento de SQL embora ...

Dê uma olhada aqui (Desça até "Fazer alterações em um esquema de banco de dados")

Respondeu 06/10/2008 em 21:28
fonte usuário

votos
0

Perform these steps in order may help you:

For more details,

ClickHere: http://south.readthedocs.org/en/latest/

1) python manage.py schemamigration apps.appname --initial

passo acima cria pasta migração como padrão.

2) python manage.py migrate apps.appname --fake

gera uma migração falso.

3) python manage.py schemamigration apps.appname --auto

Então você pode adicionar campos como você deseja e executar o comando acima.

4) python manage.py migrate apps.appname

Em seguida, migrar os arquivos para o banco de dados.

Respondeu 25/10/2013 em 11:06
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more