17
Django Migrations
In the last episode, we talked about Django Architecture and settings.py
file. In this episode, we'll discuss Django Migrations.
Migrations are used to update the changes (to add a new field, change the name of a field, etc.) we made in the model to the database.
Django creates migration files (a Python file) inside the migration folder for each model to create the table schema, and then each table is mapped to the respective migration files. Django also keeps track of the status of migration files whether they are successfully migrated to the database.
To perform migration-related tasks, we can use these commands.
python manage.py makemigrations
This is used to create migrations files in the migrations folder based on the changes we have done to the Model.
python manage.py migrate
Based on the migrations file, this command will populate the database schema.
python manage.py showmigrations
This lists all the migrations and their status. If the change is updated in the database, the status will be shown as [X] followed by the migration name.
For example:
[X] 0001_initial
[ ] 0002_auto_20210924_1740
Usage:
python manage.py sqlmigrate <app_name> <migration_name>
This is used to display the raw SQL query of the applied migrations. For example:
python manage.py sqlmigrate users 0009_delete_profile
will give the raw SQL query like as below
BEGIN;
DROP TABLE "users_profile" CASCADE;
COMMIT;
- syncdb
python manage.py migrate --run-syncdb
This command allows us for creating tables for apps without migrations.
- Creating and applying migration for a particular app
If we don't want to apply migrations totally, we can mention app-name to migrate specific apps.
For example:
python manage.py makemigrations blog
python manage.py migrate blog
17