Hantera databasen
Django ORM går längre än så att du kan interagera med data. Du kan också använda den för att skapa och uppdatera själva databasen via en process som kallas migreringar.
Migreringar
En migrering är en samling uppdateringar som ska utföras i en databas schema. Ett databasschema är definitionen av själva databasen, inklusive alla tabeller och kolumner, samt relationer mellan dessa tabeller.
När vi skapade våra modeller och definierade fälten definierade vi även tabeller, kolumner och relationer mellan dessa tabeller. Vi skapade vår schemadefinition genom att skapa våra modeller!
Migreringar används för att skapa och uppdatera databasen när våra modeller ändras. Som du förmodligen vet förändras programvaran ständigt. Hur vi definierar våra modeller i dag kan skilja sig från hur vi definierar dem i morgon. Migreringar abstraherar processen för att uppdatera databasen bort från oss. Vi kan sedan göra ändringar i våra modeller och använda Django för att utföra nödvändiga ändringar i databasen.
Gör en migrering
Om du vill skapa en migrering använder makemigrations
du kommandot i manage.py. Kommandot makemigrations
använder den aktuella listan med migreringar för att få en startpunkt och använder sedan det aktuella tillståndet för dina modeller för att fastställa deltat (de ändringar som behöver göras). Den genererar sedan den kod som krävs för att uppdatera databasen. Efter makemigrations
körningar visas namnet på migreringen.
python manage.py makemigrations
Visa SQL för migreringen
Alla åtgärder som inträffar i en relationsdatabas kräver SQL (Structured Query Language). Djangos migreringar genererar lämplig SQL när de körs. Även om du kan använda migreringsverktygen för att uppdatera databasen direkt kan vissa miljöer ha databasadministratörer som hanterar processen åt dig.
Om du vill skapa lämpliga SQL-instruktioner kan du använda sqlmigrate
.
python manage.py sqlmigrate <app_label> <migration_name>
Kommentar
Delen app_label
är namnet på din app, vanligtvis namnet på den mapp som innehåller din app. Delen migration_name
är namnet på migreringen. Du kan också se Python-koden för alla appars migreringar i dess migreringsmapp .
Visa listan över migreringar
Om du vill se alla migreringar kan du använda showmigrations
.
python manage.py showmigrations
Utföra en migrering
Kommandot migrate
kör en specifik migrering eller alla migreringar på databasen som konfigurerats i settings.py i roten på projektmappen.
Om du öppnar settings.py visas ett DATABASES
avsnitt längst ned. Det här avsnittet innehåller ett default
alternativ som i ett nytt projekt har konfigurerats för att använda SQLite. Du kan konfigurera olika databas anslutningssträng i det här avsnittet efter behov.
python manage.py migrate <app_label> <migration_name>
Kommentar
Delarna app_label
och migration_name
är valfria. Om du inte anger något av dem körs alla migreringar. Du använder ofta det här kommandot under utvecklingen.