zukucode
主にWEB関連の情報を技術メモとして発信しています。

Django マイグレーションの基本的な使い方

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


関連記事