usuń tę nazwę aplikacji z zainstalowanych aplikacji settings.py, a następnie usuń wszelkie linki do tej aplikacji z głównego pliku urls.py. Następnie możesz bezpiecznie usunąć tę aplikację
Aseem
Jeśli pracujesz nad oprogramowaniem SQLite i nie masz nic przeciwko zresetowaniu bazy danych, czy możesz po prostu usunąć folder aplikacji db.sqlite3i usunąć go z INSTALLED_APPSin settings.py?
Kevin
Odpowiedzi:
150
Django <1.7 ma przydatne polecenie zarządzania, które da ci niezbędny kod SQL do usunięcia wszystkich tabel dla aplikacji. Więcej informacji można znaleźć w dokumentacji sqlclear . Zasadniczo uruchomienie ./manage.py sqlclear my_app_namepowoduje pobranie instrukcji SQL, które należy wykonać, aby pozbyć się wszystkich śladów aplikacji w bazie danych. Nadal musisz skopiować i wkleić (lub potokować) te instrukcje do swojego klienta SQL. W przypadku Django 1.7 i nowszych użyj ./manage.py migrate my_app_name zero(zobacz migrate docs), który automatycznie uruchamia czyszczenie bazy danych.
Aby usunąć aplikację z projektu, wszystko, co musisz zrobić, to usunąć ją z INSTALLED_APPSpliku settings.py. Django nie będzie już ładować aplikacji.
Jeśli nie chcesz, aby pliki aplikacji wisiały w pobliżu, usuń katalog aplikacji z katalogu projektu lub innej lokalizacji na PYTHONPATH, w którym się znajduje.
(opcjonalnie) Jeśli aplikacja przechowywała gdzieś pliki multimedialne, pliki pamięci podręcznej lub inne pliki tymczasowe, możesz je również usunąć. Uważaj także na utrzymujące się dane sesji, które mogą pozostać z aplikacji.
(opcjonalnie) Usunąłbym również wszelkie przestarzałe typy treści.
Tak, tak.
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()
Doskonała odpowiedź, tylko jeden dodatek, który dodam: pip uninstall nazwa-pakietu to twój przyjaciel, o wiele przyjemniejszy niż przeszukiwanie PYTHONPATH.
DaveJ
25
W Django 1.7, jeśli używasz migracji, krok 1 będzie ./manage.py migrate my_app_name zero. I automatycznie wykona również SQL.
Jeśli usuwana aplikacja ma migracje, od których zależą migracje innych aplikacji, system migracji ulegnie awarii, gdy zobaczy, że te zależne migracje już nie istnieją. Zachowaj ostrożność podczas korzystania z powyższej odpowiedzi, jeśli aplikacja, która ma zostać usunięta, jest zależna od historii migracji innej z Twoich aplikacji.
Filip Kilibarda
1
Aby uzyskać kompletność, zazwyczaj musisz usunąć odniesienie do include("appname.urls")z projektuurls.py
nigel222
16
skomentuj settings.pyw INSTALLED_APPSniepotrzebnej linii aplikacji
usuń cały folder __pycache__i migrateprojekt
usuń niepotrzebny model w models.py
usuń wszystkie linki importuviews.py , admin.pyzakończ itp.
usuń wszystkie linki z urls.pyniepotrzebnych aplikacji
w bazie danych usuwam niepotrzebne tabele związane z aplikacją (robię to z pomocą programu "Valentina Studio")
usuń folder aplikacji
w linii poleceń zrób to: python manage.py migrateipython manage.py syncdb
Zakładając, że nie udostępniasz bazy danych innej aplikacji, możesz po prostu upuścić bazę danych nazwaną w settings.py.
joel3000
każda aplikacja ma własną bazę danych - nieźle
V-Light.
3
@ V-Light każda aplikacja ma własną tabelę, a każdy projekt ma własną bazę danych.
Alireza Savand
2
Uwielbiam kroki z tego artykułu - jest to obsługa migracji .
Może trzeba to dostosować w dwóch aktualizacjach kodu - ale wygląda naprawdę bezpiecznie, gdy musisz pracować z wieloma wdrożeniami (takimi jak: etap testowy, wersja BETA i produkcja - w moim przypadku)
W moim kontekście projekty istnieją kilka razy: mam system programistyczny, niektórzy koledzy z zespołu mają system rozwoju, jest system przejściowy dla klienta i system produkcyjny. Oznacza to, że nie chcę ręcznie wykonywać poleceń sql. Chcę, żeby to było zautomatyzowane.
Cel: Usuń aplikację i wszystkie tabele bazy danych.
Krok 1: opróżnij aplikację, ale pozostaw ją zainstalowaną
usuń wszystkie pliki z aplikacji oprócz folderu „migrations”
Wykonaj to polecenie: manage.py makemigrations -n drop_all_tables my_app_to_remove
db.sqlite3
i usunąć go zINSTALLED_APPS
insettings.py
?Odpowiedzi:
Django <1.7 ma przydatne polecenie zarządzania, które da ci niezbędny kod SQL do usunięcia wszystkich tabel dla aplikacji. Więcej informacji można znaleźć w dokumentacji sqlclear . Zasadniczo uruchomienie
./manage.py sqlclear my_app_name
powoduje pobranie instrukcji SQL, które należy wykonać, aby pozbyć się wszystkich śladów aplikacji w bazie danych. Nadal musisz skopiować i wkleić (lub potokować) te instrukcje do swojego klienta SQL. W przypadku Django 1.7 i nowszych użyj./manage.py migrate my_app_name zero
(zobacz migrate docs), który automatycznie uruchamia czyszczenie bazy danych.Aby usunąć aplikację z projektu, wszystko, co musisz zrobić, to usunąć ją z
INSTALLED_APPS
plikusettings.py
. Django nie będzie już ładować aplikacji.Jeśli nie chcesz, aby pliki aplikacji wisiały w pobliżu, usuń katalog aplikacji z katalogu projektu lub innej lokalizacji na PYTHONPATH, w którym się znajduje.
(opcjonalnie) Jeśli aplikacja przechowywała gdzieś pliki multimedialne, pliki pamięci podręcznej lub inne pliki tymczasowe, możesz je również usunąć. Uważaj także na utrzymujące się dane sesji, które mogą pozostać z aplikacji.
(opcjonalnie) Usunąłbym również wszelkie przestarzałe typy treści.
Tak, tak.
źródło
./manage.py migrate my_app_name zero
. I automatycznie wykona również SQL.sqlclear
został usunięty w Django 1.9, więc ta odpowiedź jest dobra tylko dla poprzednich wersji. Zobacz: docs.djangoproject.com/en/1.10/releases/1.9/…include("appname.urls")
z projektuurls.py
settings.py
wINSTALLED_APPS
niepotrzebnej linii aplikacji__pycache__
imigrate
projektmodels.py
views.py
,admin.py
zakończ itp.urls.py
niepotrzebnych aplikacjipython manage.py migrate
ipython manage.py syncdb
źródło
Aplikacja django to „zestaw” plików * .py i katalog o nazwie django-app-app. Możesz więc po prostu usunąć cały folder ze wszystkimi plikami * .py
Aby „usunąć” tabele z DB należy użyć
DELETE FROM <app-name_table-names>
Ponadto musisz usunąć linie z nazwą aplikacji z setting.py w katalogu głównym
źródło
Uwielbiam kroki z tego artykułu - jest to obsługa migracji .
Może trzeba to dostosować w dwóch aktualizacjach kodu - ale wygląda naprawdę bezpiecznie, gdy musisz pracować z wieloma wdrożeniami (takimi jak: etap testowy, wersja BETA i produkcja - w moim przypadku)
źródło
W moim kontekście projekty istnieją kilka razy: mam system programistyczny, niektórzy koledzy z zespołu mają system rozwoju, jest system przejściowy dla klienta i system produkcyjny. Oznacza to, że nie chcę ręcznie wykonywać poleceń sql. Chcę, żeby to było zautomatyzowane.
Cel: Usuń aplikację i wszystkie tabele bazy danych.
Krok 1: opróżnij aplikację, ale pozostaw ją zainstalowaną
usuń wszystkie pliki z aplikacji oprócz folderu „migrations”
Wykonaj to polecenie:
manage.py makemigrations -n drop_all_tables my_app_to_remove
Katalog wygląda teraz następująco:
Pozostaw
my_app_to_remove
w pliku „settings.py”.Krok 2: Wdróż zmiany
Zaktualizuj wszystkie projekty. Powiedz członkom zespołu, aby zaktualizowali swój projekt i uruchomili migracje.
Krok 3: usuń „my_app_to_remove” z settings.py
Teraz usuń „my_app_to_remove” z settings.py i wdróż ponownie.
źródło