Entfernen Sie diesen App-Namen aus settings.py installierten Apps und entfernen Sie dann alle Links zu dieser App aus der Hauptdatei urls.py. Dann können Sie diese App sicher löschen
Aseem
Wenn Sie mit SQLite in der Entwicklung sind und es Ihnen nichts ausmacht, die Datenbank zurückzusetzen, ist es in Ordnung, einfach den App-Ordner db.sqlite3und zu entfernen und ihn von INSTALLED_APPSin zu entfernen settings.py?
Kevin
Antworten:
150
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 importContentTypefor c inContentType.objects.all():ifnot c.model_class():print"deleting %s"%c # print(f"deleting {c}") # for Python 3.6+
c.delete()
Ausgezeichnete Antwort, nur eine Ergänzung, die ich machen würde: pip uninstall package-name is your friend, viel schöner als das Herumtollen in Ihrem PYTHONPATH.
DaveJ
25
Wenn Sie unter Django 1.7 die Migration verwenden, wird Schritt 1 ausgeführt ./manage.py migrate my_app_name zero. Und es wird automatisch auch die SQL ausführen.
Wenn die zu löschende App Migrationen enthält, von denen die Migrationen anderer Apps abhängen, bricht das Migrationssystem zusammen, wenn festgestellt wird, dass diese abhängigen Migrationen nicht mehr vorhanden sind. Seien Sie vorsichtig, wenn Sie die obige Antwort verwenden, wenn die zu löschende App eine Abhängigkeit im Migrationsverlauf einer anderen Ihrer Apps ist.
Filip Kilibarda
1
Und der Vollständigkeit include("appname.urls")urls.py
halber
16
Kommentar settings.pyin INSTALLED_APPSder Zeile der unnötigen App
Löschen Sie alle Ordner __pycache__und migratein Ihrem Projekt
unnötiges Modell löschen in models.py
Löschen des gesamten Import Link in views.py, admin.pyEnde usw.
Löschen Sie alle Links in urls.pyIhren unnötigen Apps
In der Datenbank löschen Sie unnötige Tabellen, die mit der App verknüpft sind (ich mache es mit dem Hilfsprogramm "Valentina Studio")
App-Ordner löschen
in der Kommandozeile machen Sie es: python manage.py migrateundpython manage.py syncdb
Die 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
Angenommen, Sie teilen die Datenbank nicht mit einer anderen App, können Sie einfach die in settings.py genannte Datenbank löschen.
joel3000
Jede App hat eine eigene Datenbank - nicht schlecht
V-Light
3
@ V-Light Jede App hat eine eigene Tabelle und jedes Projekt hat eine eigene Datenbank.
Alireza Savand
2
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.
Schritt 1: Leeren Sie die App, lassen Sie sie jedoch installiert
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
db.sqlite3
und zu entfernen und ihn vonINSTALLED_APPS
in zu entfernensettings.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_name
Sie 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_APPS
Ihrem Projekt entfernensettings.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.
quelle
./manage.py migrate my_app_name zero
. Und es wird automatisch auch die SQL ausführen.sqlclear
wurde 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.py
inINSTALLED_APPS
der Zeile der unnötigen App__pycache__
undmigrate
in Ihrem Projektmodels.py
views.py
,admin.py
Ende usw.urls.py
Ihren unnötigen Appspython manage.py migrate
undpython manage.py syncdb
quelle
Die 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
quelle
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).
quelle
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.
Schritt 1: Leeren Sie die App, lassen Sie sie jedoch installiert
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:
Belassen Sie
my_app_to_remove
in der Datei "settings.py".Schritt 2: Stellen Sie die Änderungen bereit
Aktualisieren Sie alle Projekte. Bitten Sie die Teamkollegen, ihr Projekt zu aktualisieren und die Migrationen auszuführen.
Schritt 3: Entfernen Sie "my_app_to_remove" aus settings.py
Entfernen Sie nun "my_app_to_remove" aus settings.py und stellen Sie es erneut bereit.
quelle