Jaka jest procedura całkowitego odinstalowania aplikacji Django wraz z usunięciem bazy danych?
db.sqlite3
i usunąć go z INSTALLED_APPS
in settings.py
?
Jaka jest procedura całkowitego odinstalowania aplikacji Django wraz z usunięciem bazy danych?
db.sqlite3
i usunąć go z INSTALLED_APPS
in settings.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
pliku 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 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
. 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
w INSTALLED_APPS
niepotrzebnej linii aplikacji__pycache__
i migrate
projekt models.py
views.py
, admin.py
zakończ itp. urls.py
niepotrzebnych aplikacjipython manage.py migrate
ipython manage.py syncdb
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
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.
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:
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
Pozostaw my_app_to_remove
w pliku „settings.py”.
Zaktualizuj wszystkie projekty. Powiedz członkom zespołu, aby zaktualizowali swój projekt i uruchomili migracje.
Teraz usuń „my_app_to_remove” z settings.py i wdróż ponownie.