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 データベースに初期データを登録するで紹介しています。