Hantera databasen

Slutförd

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.