Django マイグレーションの基本的な使い方
Django
はmodel.py
でデータベースの定義だけしておけば、CREATE
文などSQLを自動で生成・実行することができます。
データベースに定義情報を反映するマイグレーション機能の基本的な使い方を紹介します。
データベースの設定
今回はデータベースはsqlite
を使用します。
sqlite
を使用する場合、DBの情報は「db.sqlite3」というファイルで管理されます。
Django
はデフォルトの設定でsqlite
を使用しているため、特別な設定は不要です。
マイグレートファイルの作成
model.py
にデータベースの定義情報を定義したら、マイグレートファイルを作成します。
以下のコマンドを実行するとmigrationsフォルダにマイグレートファイルが作成されます。
マイグレートファイルにはCREATE
文などのSQL
文の情報が記載されています。
現状のデータベースの状態からの差分のSQL
が作成されます。
$ python manage.py makemigrations
マイグレーションの状態を確認(省略可)
以下のコマンドでマイグレーションの状態を確認できます。
appはアプリケーション名です。
$ python manage.py showmigrations app
app
[ ] 0001_initial
- [ ]はマイグレートファイルを作成してDBには反映していない状態
- [x]はマイグレートファイルを実行してDBに反映した状態
マイグレートファイルのSQLの確認(省略可)
以下のコマンドでマイグレートファイルのSQL
を確認できます。
$ python manage.py sqlmigrate app 0001_initial
マイグレーションの実行
以下のコマンドでマイグレーションを実行します。
$ python manage.py migrate
私の環境だけかもしれませんが、たまにエラーが発生する場合があります。
その場合は以下のように、分割して試してみてください。
$ python manage.py migrate app
$ python manage.py migrate
これで、model.py
に定義した情報がデータベースに反映されます。
データベースに初期データを設定する方法はDjango データベースに初期データを登録するで紹介しています。