remova o nome desse aplicativo dos aplicativos settings.py instalados e, em seguida, remova qualquer link para esse aplicativo do arquivo urls.py principal. Então, você pode excluir esse aplicativo com segurança
Aseem de
Se você estiver em desenvolvimento usando SQLite e não se importar em redefinir o banco de dados, não há problema em apenas remover a pasta do aplicativo e db.sqlite3, e removê-la de INSTALLED_APPSdentro settings.py?
Kevin
Respostas:
150
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 importContentTypefor c inContentType.objects.all():ifnot c.model_class():print"deleting %s"%c # print(f"deleting {c}") # for Python 3.6+
c.delete()
Excelente resposta, apenas uma adição que eu faria: pip uninstall package-name é seu amigo, muito mais agradável do que arrastar em torno de seu PYTHONPATH.
DaveJ
25
No Django 1.7, se você usar a migração, a etapa 1 será ./manage.py migrate my_app_name zero. E também executará automaticamente o SQL.
Se o aplicativo que está sendo excluído tiver migrações, das quais as migrações de outros aplicativos dependem, o sistema de migração será interrompido quando perceber que essas migrações dependentes não existem mais. Tenha cuidado ao usar a resposta acima se o aplicativo a ser excluído for uma dependência no histórico de migração de outro de seus aplicativos.
Filip Kilibarda
1
E para estar completo, você normalmente precisará remover uma referência a include("appname.urls")do projetourls.py
nigel222
16
comente sobre settings.pya INSTALLED_APPSlinha do aplicativo desnecessário
exclua todas as pastas __pycache__e migrateem seu projeto
exclua o modelo desnecessário em models.py
excluir todos os links de importaçãoviews.py , admin.pyfinalizar etc.
exclua todos os links em urls.pyseus aplicativos desnecessários
na base de dados apague as tabelas desnecessárias associadas à aplicação (faço-o com o programa de ajuda "Valentina Studio")
excluir pasta do aplicativo
na linha de comando, faça: python manage.py migrateepython manage.py syncdb
O 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
Supondo que você não esteja compartilhando o banco de dados com outro aplicativo, você pode simplesmente descartar o banco de dados nomeado em settings.py.
joel3000
cada aplicativo tem seu próprio banco de dados - nada mal
V-Light
3
@ V-Light cada aplicativo tem sua própria tabela e cada projeto tem seu próprio banco de dados.
Alireza Savand
2
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.
Etapa 1: esvazie o aplicativo, mas deixe-o instalado
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
db.sqlite3
, e removê-la deINSTALLED_APPS
dentrosettings.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_name
faz 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_APPS
do seu projetosettings.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.
fonte
./manage.py migrate my_app_name zero
. E também executará automaticamente o SQL.sqlclear
foi 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.py
aINSTALLED_APPS
linha do aplicativo desnecessário__pycache__
emigrate
em seu projetomodels.py
views.py
,admin.py
finalizar etc.urls.py
seus aplicativos desnecessáriospython manage.py migrate
epython manage.py syncdb
fonte
O 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
fonte
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)
fonte
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.
Etapa 1: esvazie o aplicativo, mas deixe-o instalado
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:
Deixe
my_app_to_remove
no arquivo "settings.py".Etapa 2: implantar as mudanças
Atualize todos os projetos. Diga aos companheiros de equipe para atualizar seu projeto e executar as migrações.
Etapa 3: remova "my_app_to_remove" de settings.py
Agora remova "my_app_to_remove" de settings.py e implante novamente.
fonte