Gérer la base de données

Effectué

L’ORM Django ne vous permet pas uniquement d’interagir avec les données. Vous pouvez également l’utiliser pour créer et mettre à jour la base de données elle-même à l’aide d’un processus connu sous le nom de migrations.

Migrations

Une migration est une collection de mises à jour à effectuer sur le schéma d’une base de données. Un schéma de base de données est la définition de la base de données elle-même avec toutes les tables et colonnes ainsi que les relations entre ces tables.

Quand nous avons créé nos modèles et défini les champs, nous avons également défini les tables, les colonnes et les relations entre ces tables. Nous avons créé notre définition de schéma en créant nos modèles.

Les migrations permettent de créer et de mettre à jour la base de données à mesure que nos modèles changent. Comme vous le savez probablement, les logiciels évoluent constamment. La façon dont nous définissons nos modèles aujourd’hui peut être différente de celle dont nous les définirons demain. Les migrations masquent le processus de mise à jour de la base de données. Nous pouvons ainsi apporter des modifications à nos modèles et utiliser Django pour effectuer les modifications nécessaires sur la base de données.

Effectuer une migration

Pour créer une migration, vous utilisez la commande makemigrations dans manage.py. La commande makemigrations utilise la liste actuelle des migrations comme point de départ, puis utilise l’état actuel de vos modèles pour déterminer le delta (les modifications qui doivent être apportées). Elle génère ensuite le code nécessaire pour mettre à jour la base de données. Après son exécution, la commande makemigrations affiche le nom de la migration.

python manage.py makemigrations

Afficher le code SQL pour la migration

Toutes les opérations se produisant au sein d’une base de données relationnelle nécessitent le langage SQL (Structured Query Language). Les migrations de Django génèrent le code SQL approprié quand elles s’exécutent. Même si vous pouvez utiliser les outils de migration pour mettre à jour votre base de données directement, dans certains environnements, des administrateurs de base de données géreront le processus pour vous.

Pour générer les instructions SQL appropriées, vous pouvez utiliser la commande sqlmigrate.

python manage.py sqlmigrate <app_label> <migration_name>

Notes

La partie app_label est le nom de votre application. Il s’agit généralement du nom du dossier qui contient votre application. La partie migration_name est le nom de la migration. Vous pouvez également voir le code Python des migrations de n’importe quelle application dans son dossier migrations.

Afficher la liste des migrations

Si vous souhaitez voir toutes les migrations, vous pouvez utiliser la commande showmigrations.

python manage.py showmigrations

Effectuer une migration

La commande migrate exécute une migration spécifique ou toutes les migrations sur la base de données configurée dans settings.py à la racine de votre dossier de projet.

Si vous ouvrez settings.py, vous voyez une section DATABASES en bas. Cette section inclut une option default qui, sur un nouveau projet, est configurée pour utiliser SQLite. Vous pouvez configurer différentes chaînes de connexion de base de données dans cette section, si nécessaire.

python manage.py migrate <app_label> <migration_name>

Notes

Les parties app_label et migration_name sont facultatives. Si vous n’en spécifiez aucune, toutes les migrations seront exécutées. Vous utiliserez souvent cette commande pendant le développement.