De database beheren
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.