Wie wird eine Django-App vollständig deinstalliert und die Datenbank entfernt?
db.sqlite3und zu entfernen und ihn von INSTALLED_APPSin zu entfernen settings.py?
Wie wird eine Django-App vollständig deinstalliert und die Datenbank entfernt?
db.sqlite3und zu entfernen und ihn von INSTALLED_APPSin zu entfernen settings.py?
Antworten:
Django <1.7 verfügt über einen praktischen Verwaltungsbefehl, mit dem Sie die erforderliche SQL-Datei zum Löschen aller Tabellen für eine App erhalten. Weitere Informationen finden Sie in den sqlclear-Dokumenten . Grundsätzlich erhalten ./manage.py sqlclear my_app_nameSie beim Ausführen die SQL-Anweisungen, die ausgeführt werden sollen, um alle Spuren der App in Ihrer Datenbank zu entfernen. Sie müssen diese Anweisungen noch kopieren und in Ihren SQL-Client einfügen (oder weiterleiten). Verwenden Sie für Django 1.7 und höher ./manage.py migrate my_app_name zero(siehe Migrationsdokumente ), um die Datenbankbereinigung automatisch auszuführen.
Um die App aus Ihrem Projekt zu entfernen, müssen Sie sie nur aus INSTALLED_APPSIhrem Projekt entfernen settings.py. Django lädt die App nicht mehr.
Wenn Sie nicht mehr möchten, dass die Dateien der App hängen bleiben, löschen Sie das App-Verzeichnis aus Ihrem Projektverzeichnis oder einem anderen Speicherort auf Ihrem PYTHONPATH, an dem es sich befindet.
(optional) Wenn die App Mediendateien, Cache-Dateien oder andere temporäre Dateien irgendwo gespeichert hat, möchten Sie diese möglicherweise auch löschen. Seien Sie auch vorsichtig bei verweilenden Sitzungsdaten, die möglicherweise von der App übrig bleiben.
(optional) Ich würde auch veraltete Inhaltstypen entfernen.
Wie so.
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. Und es wird automatisch auch die SQL ausführen.
sqlclearwurde in Django 1.9 entfernt, daher ist diese Antwort nur für frühere Versionen gültig. Siehe: docs.djangoproject.com/de/1.10/releases/1.9/…
include("appname.urls")urls.py
settings.pyin INSTALLED_APPSder Zeile der unnötigen App__pycache__und migratein Ihrem Projekt models.py views.py, admin.pyEnde usw. urls.pyIhren unnötigen Appspython manage.py migrateundpython manage.py syncdbDie Django-App ist eine "Menge" von * .py-Dateien und ein Verzeichnis mit einem Django-App-Namen. Sie können also einfach den gesamten Ordner mit allen * .py-Dateien löschen
Um Tabellen aus der Datenbank zu "entfernen", sollten Sie verwenden DELETE FROM <app-name_table-names>
Außerdem müssen Sie Zeilen mit dem App-Namen aus settings.py in einem Stammverzeichnis löschen
Ich mag die Schritte aus diesem Artikel sehr - er beinhaltet Migrationsunterstützung .
Möglicherweise muss es in zwei Code-Updates angepasst werden - sieht aber sehr sicher aus, wenn Sie mit vielen Bereitstellungen arbeiten müssen (z. B. Testphase, BETA-Version und Produktion - in meinem Fall).
In meinem Kontext gibt es die Projekte mehrmals: Ich habe ein Entwicklungssystem, einige Teamkollegen haben ein Entwicklungssystem, es gibt ein Staging-System für den Kunden und ein Produktionssystem. Dies bedeutet, dass ich SQL-Befehle nicht manuell ausführen möchte. Ich möchte, dass es automatisiert wird.
Ziel: Entfernen Sie die App und alle Datenbanktabellen.
Entfernen Sie alle Dateien aus der App mit Ausnahme des Ordners "Migrationen".
Führen Sie diesen Befehl aus: manage.py makemigrations -n drop_all_tables my_app_to_remove
Das Verzeichnis sieht jetzt so aus:
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
Belassen Sie my_app_to_removein der Datei "settings.py".
Aktualisieren Sie alle Projekte. Bitten Sie die Teamkollegen, ihr Projekt zu aktualisieren und die Migrationen auszuführen.
Entfernen Sie nun "my_app_to_remove" aus settings.py und stellen Sie es erneut bereit.