De database beheren

Voltooid

De Django ORM gaat verder dan het gebruik van gegevens. U kunt deze ook gebruiken om de database zelf te maken en bij te werken via een proces dat bekend staat als migraties.

Migraties

Een migratie is een verzameling updates die moeten worden uitgevoerd in het schema van een database. Een databaseschema is de definitie van de database zelf, inclusief alle tabellen en kolommen en relaties tussen deze tabellen.

Toen we onze modellen hebben gemaakt en de velden hebben gedefinieerd, hebben we ook de tabellen, kolommen en relaties tussen deze tabellen gedefinieerd. We hebben onze schemadefinitie gemaakt door onze modellen te maken.

Migraties worden gebruikt om de database te maken en bij te werken naarmate de modellen veranderen. Zoals u waarschijnlijk weet, verandert software voortdurend. Hoe we onze modellen vandaag definiƫren, kunnen verschillen van hoe we ze morgen definiƫren. Migraties abstraheren het proces van het bijwerken van de database van ons af. Vervolgens kunnen we wijzigingen aanbrengen in onze modellen en Django gebruiken om de benodigde wijzigingen in de database uit te voeren.

Een migratie maken

Als u een migratie wilt maken, gebruikt u de makemigrations opdracht in manage.py. De makemigrations opdracht gebruikt de huidige lijst met migraties om een beginpunt te krijgen en gebruikt vervolgens de huidige status van uw modellen om de delta te bepalen (de wijzigingen die moeten worden aangebracht). Vervolgens wordt de benodigde code gegenereerd om de database bij te werken. Nadat makemigrations de migratie is uitgevoerd, wordt de naam van de migratie weergegeven.

python manage.py makemigrations

De SQL voor de migratie weergeven

Voor bewerkingen die in een relationele database plaatsvinden, is SQL (Structured Query Language) vereist. Django's migraties genereren de juiste SQL wanneer ze worden uitgevoerd. Hoewel u de migratiehulpprogramma's kunt gebruiken om uw database rechtstreeks bij te werken, kunnen sommige omgevingen databasebeheerders hebben die het proces voor u beheren.

Als u de juiste SQL-instructies wilt maken, kunt u gebruiken sqlmigrate.

python manage.py sqlmigrate <app_label> <migration_name>

Notitie

Het app_label onderdeel is de naam van uw app, meestal de naam van de map die uw app bevat. Het migration_name onderdeel is de naam van de migratie. U kunt ook de Python-code zien voor de migraties van elke app in de map migraties .

De lijst met migraties weergeven

Als u alle migraties wilt zien, kunt u dit gebruiken showmigrations.

python manage.py showmigrations

Een migratie uitvoeren

Met de migrate opdracht wordt een specifieke migratie uitgevoerd of alle migraties op de database die is geconfigureerd in settings.py in de hoofdmap van uw projectmap.

Als u settings.py opent, ziet u onderaan een DATABASES sectie. Deze sectie bevat een default optie, die voor een nieuw project is geconfigureerd voor het gebruik van SQLite. U kunt indien nodig verschillende database-verbindingsreeks s configureren in deze sectie.

python manage.py migrate <app_label> <migration_name>

Notitie

De app_label onderdelen zijn migration_name optioneel. Als u dit niet opgeeft, worden alle migraties uitgevoerd. U gebruikt deze opdracht vaak tijdens de ontwikkeling.