Wenn Sie sich nicht für Daten interessieren:
Am besten löschen Sie die Datenbank und führen sie syncdb
erneut aus. Oder du kannst laufen:
Für Django> = 1,5
python manage.py flush
Für Django <1,5
python manage.py reset appname
(Sie können --no-input
am Ende des Befehls hinzufügen , damit die interaktive Eingabeaufforderung übersprungen wird.)
Wenn Sie sich für Daten interessieren:
Aus den Dokumenten:
syncdb erstellt nur Tabellen für Modelle, die noch nicht installiert wurden. Es werden niemals ALTER TABLE-Anweisungen ausgegeben, um Änderungen zu entsprechen, die nach der Installation an einer Modellklasse vorgenommen wurden. Änderungen an Modellklassen und Datenbankschemata sind häufig mit Mehrdeutigkeiten verbunden, und in diesen Fällen müsste Django die richtigen Änderungen erraten. Es besteht das Risiko, dass kritische Daten dabei verloren gehen.
Wenn Sie Änderungen an einem Modell vorgenommen haben und die Datenbanktabellen entsprechend ändern möchten, verwenden Sie den Befehl sql, um die neue SQL-Struktur anzuzeigen, und vergleichen Sie diese mit Ihrem vorhandenen Tabellenschema, um die Änderungen zu berechnen.
https://docs.djangoproject.com/de/dev/ref/django-admin/
Referenz: FAQ - https://docs.djangoproject.com/de/dev/faq/models/#if-i-make-changes-to-a-model-how-do-i-update-the-database
Die Leute empfehlen auch South ( http://south.aeracode.org/docs/about.html#key-features ), aber ich habe es nicht versucht.
flush
. Versuchen Sie, die interaktive Eingabeaufforderung zu verwendenpython manage.py flush
oderpython manage.py flush --noinput
zu überspringen.django-admin flush
den Dokumenten entsprichtMit Django - Erweiterungen , ausgeführt wird :
Löscht die Datenbanktabellen und führt dann Folgendes aus:
Wird sie neu erstellen (South kann Sie bitten, Dinge zu migrieren).
quelle
Ich denke, Django- Dokumente erwähnen ausdrücklich, dass, wenn die Absicht besteht, wieder von einer leeren Datenbank zu starten (was die Absicht von OP zu sein scheint), einfach die Datenbank löschen und neu erstellen und erneut ausführen
migrate
(anstatt zu verwendenflush
):Für den Fall von OP müssen wir also nur:
python manage.py migrate
quelle
Am schnellsten (löscht und erstellt alle Tabellen einschließlich Daten):
Vorsicht:
quelle
reset
Läuft bereits in SQL, sodass keine Pipe erforderlich istdbshell
. Wenn Sie densqlreset
Befehl verwenden, wird nur die SQL ausgedruckt, die Sie zur Ausführung an die Shell weiterleiten können. Dies ist jedoch ein unnötiger Schritt.Mit der Django-Truncate-Bibliothek können Sie alle Daten einer Tabelle löschen, ohne die Tabellenstruktur zu zerstören.
Beispiel:
settings.py
Datei hinzu:quelle