Verwalten der Datenbank
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.