2
0

More than 3 years have passed since last update.

Djangoでマイグレーションを使っていないプロジェクトでマイグレーションを導入する

Posted at

はじめに

プロジェクトの途中からDjangoのマイグレーション機能を使うようにした際のメモです。
Djangoのバージョンは2.0を使ってます。

models.pyを作る

まず、DBの構造を定義してあるmodels.pyを作る必要があります。
models.pyは既存のスキーマ情報から逆生成します。

$ python manage.py inspectdb > models.py

これで、models.pyが生成されるので、見てみるとスキーマの情報が記載されていると思います。
あとは、マイグレーションで管理をするので、managed = False を消していくだけになります。

マイグレーションファイルを作る

models.pyができたので、次にマイグレーションファイルを生成していきます。
下記のコマンドを実行すると 0001_initial.py のマイグレーションファイルができます。

$ python manage.py makemigrations ${app_name}

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

マイグレーションファイルができたので、マイグレーションを実行していきます。
基本的には、

$ python manage.py migrate ${app_name}

のコマンドでマイグレーションを実行しますが、今回の場合は、すでにテーブルが存在するので、
--fake-initial オプションを使って初回のマイグレーションをダミーで流します。

$ python manage.py migrate ${app_name} --fake-initial

これで、移行作業は終わりになります。
あとは、適時、 models.py を修正して、 makemigrations でマイグレーションファイルを作成していく流れになります。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0