データベースを管理する

完了

Django ORM は、データとの対話を可能にするだけではありません。 これを使用すると、移行と呼ばれるプロセスによってデータベース自体を作成および更新することもできます。

移行

移行とは、データベースのスキーマに対して実行される更新のコレクションのことです。 データベース スキーマは、すべてのテーブルと列、およびそれらのテーブル間のリレーションシップを含む、データベース自体の定義です。

モデルを作成し、フィールドを定義したときに、テーブル、列、およびテーブル間のリレーションシップも定義しました。 モデルを作成して、スキーマ定義を作成しました。

移行は、モデルの変更に応じてデータベースを作成および更新するために使用されます。 ご存知のように、ソフトウェアは絶えず変化しています。 現在のモデルの定義方法は、将来のモデルの定義方法とは異なる場合があります。 移行は、データベースを更新するプロセスをユーザーから取り除きます。 その後、モデルを変更し、Django を使用してデータベースに必要な変更を行うことができます。

移行を作成する

移行を作成するには、manage.pymakemigrations コマンドを使用します。 makemigrations コマンドでは、現在の移行一覧を使用して開始点を取得してから、モデルの現在の状態を使用して差分 (行う必要がある変更) を決定します。 次に、データベースを更新するために必要なコードが生成されます。 makemigrations の実行後に、移行の名前が表示されます。

python manage.py makemigrations

移行用の SQL を表示する

リレーショナル データベース内で発生する操作には、構造化照会言語 (SQL) が必要です。 Django の移行では、実行時に適切な SQL が生成されます。 移行ツールを使用してデータベースを直接更新することもできますが、環境によっては、ユーザーのためにプロセスを管理するデータベース管理者が存在する場合があります。

適切な SQL ステートメントを作成するには、sqlmigrate を使用できます。

python manage.py sqlmigrate <app_label> <migration_name>

Note

app_label 部分はアプリの名前です。通常は、アプリを含むフォルダーの名前です。 migration_name 部分は移行の名前です。 また、migrations フォルダー内のすべてのアプリを移行するための Python コードを確認することもできます。

移行の一覧を表示する

すべての移行を表示する場合は、showmigrations を使用できます。

python manage.py showmigrations

移行を実行する

migrate コマンドによって、プロジェクト フォルダーのルートにある settings.py で構成されているデータベースで、特定の移行またはすべての移行が実行されます。

settings.py を開くと、下部に DATABASES セクションが表示されます。 このセクションには default オプションが含まれており、ここでは新しいプロジェクトで SQLite を使用するように構成されています。 必要に応じて、このセクションで異なるデータベース接続文字列を構成できます。

python manage.py migrate <app_label> <migration_name>

Note

app_labelmigration_name の部分は省略可能です。 どちらも指定しない場合は、すべての移行が実行されます。 このコマンドは、開発時に頻繁に使用します。