[PYTHON] Lernnotizen für die Migrationsfunktion im Django-Framework (2)

In Fortsetzung von Letztes Mal möchte ich die Migrationsfunktion des Django-Frameworks untersuchen.

Letzte Zusammenfassung

Entwicklungsumgebung
Mac OS:Sierra
python2.7.10
django1.11.2
mysql5.7.18

Umriss dieser Zeit

Beim letzten Mal habe ich den grundlegenden Workflow für Migrationen vorgestellt. Dieses Mal werde ich jedoch grundlegende Befehle im Zusammenhang mit Migrationen und die Lösung von Problemen untersuchen, auf die Sie während der tatsächlichen Verwendung häufig stoßen.

migrationsbezogene Befehle

In den offiziellen Dokumenten werden vier Befehle für Migrationen vorgestellt. Verwenden wir die Demo-App und die Befehle.

showmigrations Geben Sie den folgenden Befehl in die Befehlszeile ein:

python manage.py showmigrations

In der Ausgabe:

admin
 [X] 0001_initial
 [X] 0002_logentry_remove_auto_add
auth
 [X] 0001_initial
 [X] 0002_alter_permission_name_max_length
 [X] 0003_alter_user_email_max_length
 [X] 0004_alter_user_username_opts
 [X] 0005_alter_user_last_login_null
 [X] 0006_require_contenttypes_0002
 [X] 0007_alter_validators_add_error_messages
 [X] 0008_alter_user_username_max_length
contenttypes
 [X] 0001_initial
 [X] 0002_remove_content_type_name
polls
 [X] 0001_initial
 [ ] 0002_article_image_url
sessions
 [X] 0001_initial

Der aktuelle Status der Migrationen für jede App im Projekt wird in einer Checkliste angezeigt. Alle Standard-App-Migrationen wie Admin, Auth, Inhaltstypen und Sitzungen wurden berücksichtigt. In Umfragen, bei denen es sich um eine Demo-App handelt, wird die in der Initialisierung angegebene Migrationsdatei 0001_initial.py überprüft. Die Migrationsdatei 0002_article_image_url.py, die durch Wiederherstellung abgebrochen wurde, wurde deaktiviert. Sie können die App auch mit Optionen im Befehl angeben.

python manage.py showmigrations polls

Dadurch wird die Ausgabe auf eine bestimmte App beschränkt.

polls
 [X] 0001_initial
 [ ] 0002_article_image_url

makemigrations Erstellen Sie eine Migrationsdatei gemäß den Modelländerungen. Ein konkretes Beispiel finden Sie unter Letztes Mal.

migrate Verwenden Sie die erstellte Migrationsdatei, um das Modell in der Datenbank wiederzugeben. Fügen wir die abgebrochenen Änderungen erneut hinzu.

python manage.py migrate polls

Ausgabe

Operations to perform:
  Apply all migrations: polls
Running migrations:
  Applying polls.0002_article_image_url... OK

Überprüfen Sie den Status von Migrationen in der Demo-App:

python manage.py showmigrations polls

Ausgabe:

polls
 [X] 0001_initial
 [X] 0002_article_image_url

Sie können sehen, dass die Migrationsdatei 0002_article_image_url.py wiedergegeben wurde.

sqlmigrate

Zeigt die SQL-Anweisung an, die den Inhalt der Migrationsdatei tatsächlich ausführt. Wenn Sie es verwenden möchten, müssen Sie den Namen der Zielanwendung und den Namen der Migrationsdatei in die Optionen eingeben. Geben Sie die Migrationsdatei 0002_article_image_url an und führen Sie sie aus.

python manage.py sqlmigrate polls 0002_article_image_url

Ausgabe

BEGIN;
--
-- Add field image_url to article
--
ALTER TABLE `polls_article` ADD COLUMN `image_url` varchar(200) DEFAULT toBeImplement NOT NULL;
ALTER TABLE `polls_article` ALTER COLUMN `image_url` DROP DEFAULT;
COMMIT;

Das Verhalten verdächtiger Migrationen wurde sofort gelöscht. Darüber hinaus können Sie mit der Option --backwards auch die SQL-Anweisung zum Abbrechen von Migrationen anzeigen.

python manage.py sqlmigrate --backwards polls 0002_article_image_url

Ausgabe

BEGIN;
--
-- Add field image_url to article
--
ALTER TABLE `polls_article` DROP COLUMN `image_url`;
COMMIT;

Der Kommentar beschreibt die Migrationsdatei, aber die SQL-Anweisung macht die Änderungen ordnungsgemäß rückgängig (entfernt die Spalte image_url).

Recommended Posts

Lernnotizen für die Migrationsfunktion im Django-Framework (2)
Lernnotizen für die Migrationsfunktion im Django-Framework (3)
Lernnotizen für die Migrationsfunktion im Django-Framework (1)
Verschiedene Hinweise zum Django REST-Framework
Listenmethode für verschachtelte Ressourcen im Django REST-Framework
So schreiben Sie eine benutzerdefinierte Validierung in Django REST Framework
Zusammenfassung der Stolperpunkte in Django zum ersten Mal
Starten Sie Notizen für vorhandene Django-Anwendungen
Lernverlauf für die Teilnahme an der Team-App-Entwicklung mit Python ~ Django Tutorial 5 ~
Lernverlauf für die Teilnahme an der Entwicklung von Team-Apps mit Python ~ Django Tutorial 4 ~
Schleife Für umgekehrte Anweisung in HTML-Datei auf Django
Lernverlauf für die Teilnahme an der Team-App-Entwicklung mit Python ~ Django Tutorial 1, 2, 3 ~
Wechseln Sie die in Django 1.9 angezeigte Sprache
Lernverlauf für die Teilnahme an der Team-App-Entwicklung mit Python ~ Django Tutorial 6 ~
Lernverlauf für die Teilnahme an der Team-App-Entwicklung mit Python ~ Django Tutorial 7 ~
Starten Sie Django zum ersten Mal
Zusammenfassung der Seiten, die zum Studium des Deep Learning Framework Chainer nützlich sind
Holen Sie sich die Abfragezeichenfolge (Abfragezeichenfolge) mit Django
Holen Sie sich die IP-Adresse des Kunden mit Django
Logisches Löschen in Django, DRF (Django REST Framework)
Verstehen Sie den Komfort des Django Rest Framework
Django ~ Lass es uns im Browser anzeigen ~
Anmerkung von nfc.ContactlessFrontend () von nfcpy von Python
Notizen vom Anfang von Python 1 lernen
Hinweise zum Erstellen statischer Dateien mit Django
Ändern Sie die Liste in der for-Anweisung
Same-Site-Attributeinstellung des Cookies in Django
Abfrageparameter für GET-Anforderungen mit Django abrufen
MongoDB mit Python zum ersten Mal
Hinweise zur Verwendung von Python (Pydev) mit Eclipse
Notizen vom Anfang von Python 2 lernen
Versuchen Sie, die Spotify-API in Django zu aktivieren.
[Lernen stärken] Suche nach der besten Route
Wiederholen Sie alles für den Django-Anmeldebildschirm
Django Memo
Ich habe versucht, die Veränderung der Schneemenge für 2 Jahre durch maschinelles Lernen vorherzusagen
Feature Engineering für maschinelles Lernen Beginnend mit dem 4. Google Colaboratory - Interacting Features
Django Memo
So installieren Sie das Deep Learning Framework Tensorflow 1.0 in der Windows Anaconda-Umgebung
Die Funktion _authenticate_with_backend wurde in django auth.autenticate nicht mehr unterstützt
Die Geschichte, dass die Lernkosten von Python niedrig sind
Tipps zum Erreichen der ATND-API mit Python
Hinweise zur Implementierung einer einfachen Co-Filterung in Python
Geben Sie die Ansichts-URL in der Django-Vorlage an
Die Geschichte der Anzeige von Mediendateien in Django
Implementieren Sie die JWT-Anmeldefunktion im Django REST-Framework
[Implementierung zum Lernen] Implementieren Sie Stratified Sampling in Python (1)
[Django] CSS im Projekt kann nicht gelesen werden
Führen Sie eine mehrdeutige Suche nach MySQL in Django durch
Wissensnotizen erforderlich, um das Python-Framework zu verstehen
Implementierung der Authentifizierungsfunktion in Django REST Framework mit djoser
[Für Anfänger] Einführung in die Vektorisierung beim maschinellen Lernen
Ich habe den Deep Learning Framework Chainer installiert
Lassen Sie uns das arithmetische Lehrmittel "Jamaica" ❗️ Vol.02 "Hinweise zum Erstellen von Funktionen in Python" reproduzieren.
Lassen Sie uns das arithmetische Lehrmittel "Jamaica" ❗️ Vol.01 "Hinweise zum Anzeigen von Bildern in Python" reproduzieren.