今回はDjangoのMigration機能を使ってDjango側でデータベースの管理を行っていきます。
これにより新規テーブル作成や、カラムを追加するときにsql文を作成することなく、
django側で自動管理、作成することができます。
非常に便利です。
まずは初めてのマイグレーションを試していきます。
公式ドキュメントを見ずに適当に進めていたので悪しからず。
私の記事で成功しなかったら、公式ページを見ましょう!!
DjangoでMySQLとの接続確認
まずはDjangoとMySQLの接続ができている前提なので、接続確認をします。
接続がまだの方、わからない方はこちらの記事にまとめています。
DjangoのMigrationとは
今回行うMigrationについて簡単に要約してまとめてみました。
マイグレーションとは、Djangoがデータベースの変更を保存する手法。
ファイルに自動的に保存し、データベースに反映されるので管理がとても楽です。
これから作業していくmodels.pyにテーブルなどの定義を記載していくだけなので、sql文などのクエリを書く必要が無いです。
Migrationの手順
DjangoでMigrationを進める手順はシンプルです。
- モデルの作成
- モデルの変更の保存
- モデルをデータベースに反映
今回はまだ何もしていない段階からの実行になります。
一緒に進めていきましょう。
models.pyの作成
まずはモデルの作成です。
models.pyにテーブルを定義していきます。
私の場合は作成したDjangoのアプリにmodels.pyが無かったので、
アプリのディレクトリ直下にmodels.pyのファイルを作成しました。
今回はuser_infoというテーブルを作成します。
models.pyにユーザー情報を管理するテーブルで適当なカラムを設定します。
from django.db import models class UserInfo(models.Model): # 各フィールド情報を定義 id = models.AutoField # 自動採番でidを付与 user_name = models.CharField(max_length=255, blank=True) # ユーザー名 password = models.CharField(max_length=255, blank=True) # パスワード情報 auth_flg = models.IntegerField(default=0) # 権限フラグ del_flg = models.BooleanField(default=False) # 削除有無 # テーブル名の定義 class Meta: db_table = 'user_info'
python manage.py makemigrations
次にモデルの変更の保存を行います。
仮想環境で次のコマンドを実施
実施するとmigrations配下に0001_initial.pyが作成されます
また、定義したモデルも作成されました。
python manage.py migrate アプリ名
最後に次のコマンドを実行して、データベースに反映させます。
実行して成功すると画像のように「OK」と表示されます。
0001_initialファイルがデータベースに反映されたようです。
MySQLでテーブルを確認
最後にMySQL、もしくはMySQL Workbenchからマイグレーションが反映されているのか確認。
user_infoテーブルが作成されているので成功です。
フィールドを設定するチートシートが欲しい
models.pyでテーブルのカラムを設定する際に、
各カラムのフィールドの設定一覧を用意しておくと便利です。
たいてい公式のドキュメントに記載されていますね。