【Django】「migrate」コマンドでデータベースの作成・更新を効率的に管理する方法

Web

こんにちは!ゆーや(@yuyamanm118712)です。

Djangoは、Pythonのフレームワークの中でも特に人気があり、その強力な機能の一つが「migrate」コマンドです。

このコマンドを使うことで、データベースのスキーマを効率的に管理し、アプリケーションの進化に伴うデータベースの変更を容易に追跡できます。

この記事では、「migrate」コマンドの使い方やその背後にある仕組みを深掘りし、効果的にDjangoアプリケーションを管理する方法について解説します。

ゆーや
ゆーや

Djangoでは「マイグレーション」を使うことで、SQLいらずでテーブルが作れるよ!

Djangoの「migrate」コマンドとは?

「migrate」コマンドは、Djangoのデータベース移行システムの中核を成すコマンドです。

これにより、モデルの変更をデータベーススキーマに反映することができます。

通常、Djangoアプリケーションを開発する際には、models.pyファイルでデータベーステーブルの構造を定義します。

migrateコマンドを実行することで、この定義に基づいたデータベースのテーブル作成や変更が自動的に行われます。

ゆーや
ゆーや

DBやテーブルって作ったり、修正したり面倒…

でも「migrate」を使えば…

「migrate」コマンドの基本的な使い方

以下の流れでmigrateは使っていきます。

  1. Modelファイル(テーブル定義)を作成・修正する
  2. マイグレーションファイルの生成する
  3. マイグレーションを実行する
ゆーや
ゆーや

順番に見ていくよ!

Djangoのプロジェクトやアプリの作成がわからない方は、以下の記事を見てね!

Modelの作成

次のようなテーブル「」を作るとします。

カラム名データ内容
テキスト文字列
数値数値
作成日時日時
ゆーや
ゆーや

ただし、マイグレーションではデフォルトで先頭に「ID」カラムが作られるのでそこだけ注意!

アプリフォルダ内のmodels.pyを以下のように修正します。

from django.db import models

# Create your models here.
# models.Modelを継承したクラスを作成
class SampleModel(models.Model):
    # 「テキスト」というテキストのカラムを定義
    title = models.CharField(
        verbose_name='テキスト',
        max_length=50
    )

    # 「数値」という数値用のカラムを定義
    number = models.IntegerField(
        verbose_name='数値'
    )

    # 「作成日時」という日時のカラムを定義
    create_dt = models.DateTimeField(
        verbose_name='作成日時'
    )

マイグレーションファイルの生成する

以下のコマンドを実行すると、マイグレーションファイルが作成されます。

python manage.py makemigrations create_table_app
ゆーや
ゆーや

0001_initial.pyというファイルができたらOK!

0001_initial.pyのファイルの中身はこちら!

# Generated by Django 4.1 on 2024-08-03 10:24

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = []

    operations = [
        migrations.CreateModel(
            name="SampleModel",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("title", models.CharField(max_length=50, verbose_name="テキスト")),
                ("number", models.IntegerField(verbose_name="数値")),
                ("create_dt", models.DateTimeField(verbose_name="作成日時")),
            ],
        ),
    ]
ゆーや
ゆーや

マイグレーションファイルは、pythonでDB操作を実行するためのSQLだと思っておけば大丈夫だよ!

マイグレーションを実行する

以下のコマンドを実行すると、マイグレーション(DB操作)が実行されます。

python manage.py migrate

実行結果は以下のような表示になります。

ゆーや
ゆーや

これでテーブルができました!

テーブルができたか確認する

ゆーや
ゆーや

Django管理サイトを使用して確認します。

ユーザーの作成とDjango管理サイトの操作については、以下の記事を見てね!

Django管理サイトにアクセスし、ログインすると

「CREATE_TABLE_APP」に「Sample models」が作られているのがわかります。

さらに「Add」をクリックすると

カラムもきちんと作られているのがわかります。

Django管理サイトからデータを追加

ゆーや
ゆーや

以下の記事を見てね!

migrateで作成できるデータ型

ゆーや
ゆーや

以下の記事を見てね!

※現在、執筆中になります。少々お待ちください

コメント

タイトルとURLをコピーしました