Gestire il database

Completato

L'ORM di Django consente non solo di interagire con i dati, ma anche di creare e aggiornare il database tramite un processo noto come migrazioni.

Migrazioni

Una migrazione è una raccolta di aggiornamenti da eseguire sullo schema di un database. Uno schema di database è la definizione del database stesso, incluse tutte le tabelle e le colonne e le relazioni tra queste tabelle.

Quando sono stati creati i modelli e definiti i campi, sono state definite anche le tabelle, le colonne e le relazioni tra queste tabelle. Con la creazione dei modelli è stata creata la definizione dello schema.

Le migrazioni vengono usate per creare e aggiornare il database in base alle modifiche apportate ai modelli. Come probabilmente si saprà, il software è in continua evoluzione. Il modo in cui i modelli vengono definiti attualmente può essere diverso dal modo in cui verranno definiti in futuro. Le migrazioni sottraggono agli sviluppatori il processo di aggiornamento del database. È quindi possibile apportare modifiche ai modelli e usare Django per eseguire le modifiche necessarie nel database.

Eseguire una migrazione

Per creare una migrazione, è possibile usare il comando makemigrations in manage.py. Il comando makemigrations usa l'elenco corrente di migrazioni per ottenere un punto iniziale e quindi usa lo stato corrente dei modelli per determinare il valore differenziale (le modifiche che devono essere apportate). Genera quindi il codice necessario per aggiornare il database. Dopo l'esecuzione di makemigrations, viene visualizzato il nome della migrazione.

python manage.py makemigrations

Visualizzare il linguaggio SQL per la migrazione

Tutte le operazioni che si verificano all'interno di un database relazionale richiedono l'uso del linguaggio SQL (Structured Query Language). Le migrazioni di Django generano il linguaggio SQL appropriato quando vengono eseguite. Anche se è possibile usare gli strumenti di migrazione per aggiornare direttamente il database, in alcuni ambienti possono essere presenti amministratori di database che gestiscono il processo.

Per creare le istruzioni SQL appropriate, è possibile usare sqlmigrate.

python manage.py sqlmigrate <app_label> <migration_name>

Nota

La parte app_label è il nome dell'app, che in genere corrispondente al nome della cartella contenente l'app. La parte migration_name è il nome della migrazione. È anche possibile visualizzare il codice Python di tutte le migrazioni dell'app nella cartella migrations.

Visualizzare l'elenco delle migrazioni

Se si vogliono visualizzare tutte le migrazioni, è possibile usare showmigrations.

python manage.py showmigrations

Eseguire una migrazione

Il comando migrate esegue una migrazione specifica o tutte le migrazioni per il database configurato in settings.py nella radice della cartella del progetto.

Se si apre settings.py, verrà visualizzata una sezione DATABASES nella parte inferiore. Questa sezione include un'opzione default che in un nuovo progetto è configurata per l'uso di SQLite. In questa sezione è possibile configurare diverse stringhe di connessione di database in base alle esigenze.

python manage.py migrate <app_label> <migration_name>

Nota

app_label e migration_name sono parti facoltative. Se non si specifica né l'uno né l'altro valore, vengono eseguite tutte le migrazioni. Questo comando verrà usato spesso durante lo sviluppo.