Verwalten der Datenbank

Abgeschlossen

Der Django-ORM geht über die Möglichkeit der Interaktion mit Daten hinaus. Sie können ihn auch zum Erstellen und Aktualisieren der Datenbank selbst über einen als Migrationen bezeichneten Prozess verwenden.

Migrationen

Bei einer Migration handelt es sich um eine Sammlung von Aktualisierungen, die für das Schema einer Datenbank ausgeführt werden. Bei einem Datenbankschema handelt es sich um die Definition der Datenbank selbst, einschließlich aller Tabellen und Spalten sowie der Beziehungen zwischen diesen Tabellen.

Beim Erstellen unserer Modelle und Definieren der Felder haben wir auch die Tabellen, Spalten und Beziehungen zwischen diesen Tabellen definiert. Wir haben unsere Schemadefinition erstellt, indem wir unsere Modelle erstellt haben!

Migrationen werden verwendet, um die Datenbank zu erstellen und zu aktualisieren, wenn sich unsere Modelle ändern. Wie Sie wahrscheinlich wissen, ändert sich Software ständig. Wie wir unsere Modelle heute definieren, kann sich von der Definition von morgen unterscheiden. Migrationen abstrahieren den Prozess der Aktualisierung der Datenbank weg von uns. Wir können dann Änderungen an unseren Modellen vornehmen und Django verwenden, um die erforderlichen Änderungen an der Datenbank vorzunehmen.

Durchführen einer Migration

Verwenden Sie zum Erstellen einer Migration den Befehl makemigrations in manage.py. Der Befehl makemigrations verwendet die aktuelle Liste der Migrationen, um einen Ausgangspunkt zu erhalten, und verwendet dann den aktuellen Zustand Ihrer Modelle, um das Delta (die Änderungen, die vorgenommen werden müssen) zu bestimmen. Anschließend wird der erforderliche Code generiert, um die Datenbank zu aktualisieren. Nach der Ausführung von makemigrations wird der Name der Migration angezeigt.

python manage.py makemigrations

Anzeigen der SQL-Anweisungen für die Migration

Alle Vorgänge, die in einer relationalen Datenbank stattfinden, erfordern Structured Query Language (SQL). Die Migrationen von Django generieren die entsprechenden SQL-Anweisungen, wenn sie ausgeführt werden. Auch wenn Sie die Migrationstools verwenden können, um Ihre Datenbank direkt zu aktualisieren, gibt es in einigen Umgebungen möglicherweise Datenbankadministratoren, die den Vorgang für Sie verwalten.

Zum Erstellen der entsprechenden SQL-Anweisungen können Sie sqlmigrate verwenden.

python manage.py sqlmigrate <app_label> <migration_name>

Hinweis

Der app_label-Teil ist der Name der App, in der Regel der Name des Ordners, der die App enthält. Der migration_name-Teil ist der Name der Migration. Sie können auch den Python-Code für alle Migrationen der App in ihrem Ordner migrations anzeigen.

Anzeigen der Liste der Migrationen

Wenn Sie alle Migrationen anzeigen möchten, können Sie showmigrations verwenden.

python manage.py showmigrations

Durchführen einer Migration

Der Befehl migrate führt eine bestimmte Migration oder alle Migrationen für die in settings.py konfigurierte Datenbank im Stammverzeichnis Ihres Projektordners aus.

Wenn Sie settings.py öffnen, wird unten ein Abschnitt DATABASES angezeigt. Dieser Abschnitt enthält eine default-Option, die für ein neues Projekt für die Verwendung von SQLite konfiguriert ist. Sie können bei Bedarf andere Datenbankverbindungszeichenfolgen in diesem Abschnitt konfigurieren.

python manage.py migrate <app_label> <migration_name>

Hinweis

Die Teile app_label und migration_name sind optional. Wenn Sie keine der beiden Optionen angeben, werden alle Migrationen ausgeführt. Sie verwenden diesen Befehl während der Entwicklung häufig.