Qual é a maneira mais fácil de limpar um banco de dados a partir do CLI com manage.py em Django?
Mas {[[0]} não toca nas tabelas existentes. Há alguma maneira melhor de lidar com este problema?
4 answers
Se não se importar com os dados:
A melhor maneira seria largar a base de dados e correr de novo. Ou pode correr:Para Django > = 1, 5
python manage.py flush
Para Django
python manage.py reset appname
(pode adicionar --no-input
ao fim do comando para que ele ignore a linha de comandos interactiva.)
Se se importar com os dados:
Dos documentos:
O Syncdb só irá criar tabelas para modelos que ainda não foram fornecer. Nunca irá alterar TABELA declarações a corresponder às alterações feitas para uma classe de modelo após a instalação. Alterações às classes de modelos e à base de dados os esquemas envolvem muitas vezes alguma forma de ambiguidade e, nesses casos, Django teria de adivinhar o correcto. mudanças a fazer. Há um risco de que dados críticos seriam perdidos no processo.
Se fez alterações a um modelo e deseja alterar as tabelas da base de dados para corresponder, use o comando sql para mostrar a nova estrutura SQL e compare isso com o seu quadro existente esquema para resolver as mudanças.
Https://docs.djangoproject.com/en/dev/ref/django-admin/
Referência: FAQ - https://docs.djangoproject.com/en/dev/faq/models/#if-i-make-changes-to-a-model-how-do-i-update-the-database
As pessoas também recomendam o sul ( http://south.aeracode.org/docs/about.html#key-features mas ainda não experimentei.
Usando as extensões Django , em execução:
./manage.py reset_db
Irá limpar as tabelas da base de dados, depois executando:
./manage.py syncdb
Irá recriá-los (o sul pode pedir-lhe para migrar coisas).
Então, para o caso da OP, só precisamos de ...Se preferires começar a partir de uma base de dados vazia e repetir tudo migrações, você deve largar e recriar a base de dados e então executar migre em vez disso.
- larga a base de dados de MySQL
- recriar a base de Dados
- corre
python manage.py migrate
O MAIS RÁPIDO (cai e cria todas as tabelas, incluindo dados):
./manage.py reset appname | ./manage.py dbshell
Cuidado:
- pode não funcionar correctamente nas janelas.
- pode manter algumas tabelas antigas no db