Qual é o procedimento para desinstalar completamente um aplicativo Django, completo com a remoção do banco de dados?
db.sqlite3, e removê-la de INSTALLED_APPSdentro settings.py?
Qual é o procedimento para desinstalar completamente um aplicativo Django, completo com a remoção do banco de dados?
db.sqlite3, e removê-la de INSTALLED_APPSdentro settings.py?
Respostas:
Django <1.7 tem um comando de gerenciamento útil que fornecerá o SQL necessário para eliminar todas as tabelas de um aplicativo. Veja a documentação sqlclear para mais informações. Basicamente, a execução ./manage.py sqlclear my_app_namefaz com que você obtenha as instruções SQL que devem ser executadas para eliminar todos os rastros do aplicativo em seu banco de dados. Você ainda precisa copiar e colar (ou canalizar) essas instruções em seu cliente SQL. Para Django 1.7 e superior, use ./manage.py migrate my_app_name zero(veja os documentos de migração ), que executa a limpeza do banco de dados automaticamente.
Para remover o aplicativo do seu projeto, tudo o que você precisa fazer é removê-lo do INSTALLED_APPSdo seu projeto settings.py. Django não irá mais carregar o aplicativo.
Se você não quiser mais que os arquivos do aplicativo fiquem por aí, exclua o diretório do aplicativo do diretório do seu projeto ou outro local em seu PYTHONPATH onde ele reside.
(opcional) Se o aplicativo armazenou arquivos de mídia, arquivos de cache ou outros arquivos temporários em algum lugar, você pode querer excluí-los também. Também tenha cuidado com os dados da sessão que podem ser remanescentes do aplicativo.
(opcional) Eu também removeria qualquer tipo de conteúdo desatualizado.
Igual a.
from django.contrib.contenttypes.models import ContentType
for c in ContentType.objects.all():
if not c.model_class():
print "deleting %s"%c # print(f"deleting {c}") # for Python 3.6+
c.delete()
./manage.py migrate my_app_name zero. E também executará automaticamente o SQL.
sqlclearfoi removido no Django 1.9, portanto, esta resposta só é válida para versões anteriores. Consulte: docs.djangoproject.com/en/1.10/releases/1.9/…
include("appname.urls")do projetourls.py
settings.pya INSTALLED_APPSlinha do aplicativo desnecessário__pycache__e migrateem seu projeto models.py views.py , admin.pyfinalizar etc. urls.pyseus aplicativos desnecessáriospython manage.py migrateepython manage.py syncdbO aplicativo django é um "conjunto" de arquivos * .py e um diretório com um nome do aplicativo django. Assim, você pode simplesmente excluir toda a pasta com todos os arquivos * .py
Para "remover" tabelas do banco de dados, você deve usar DELETE FROM <app-name_table-names>
Além disso, você deve excluir as linhas com o nome do aplicativo de setting.py em um diretório raiz
Eu realmente amo as etapas deste artigo - inclui suporte à migração .
Talvez precise ser adaptado em duas atualizações de código - mas parece muito seguro quando você tem que trabalhar com muitas implantações (como: estágio de teste, versão BETA e produção - no meu caso)
No meu contexto os projetos existem várias vezes: eu tenho um sistema de desenvolvimento, alguns colegas têm um sistema de desenvolvimento, existe um sistema de staging para o cliente e um sistema de produção. Isso significa que não quero executar comandos sql manualmente. Eu quero que seja automatizado.
Objetivo: Remover o aplicativo e todas as tabelas do banco de dados.
remova todos os arquivos do aplicativo, exceto a pasta "migrações"
Execute este comando: manage.py makemigrations -n drop_all_tables my_app_to_remove
O diretório agora se parece com isto:
my_app_to_remove/
my_app_to_remove/__init__.py
my_app_to_remove/migrations
my_app_to_remove/migrations/0001_initial.py
my_app_to_remove/migrations/....
my_app_to_remove/migrations/0030_drop_all_tables.py
my_app_to_remove/migrations/__init__.py
Deixe my_app_to_removeno arquivo "settings.py".
Atualize todos os projetos. Diga aos companheiros de equipe para atualizar seu projeto e executar as migrações.
Agora remova "my_app_to_remove" de settings.py e implante novamente.