January 15, 2021
←前回:Day 9 モデルの作成
#注意書き
この記事は単一の記事ではありません。
日記として書いているため、初見の方にはお役に立てないかと思います。
「Djangoを学びたい」とのことでありましたら[Day 1]Djangoの開発環境から読むことをおすすめします。
#はじめに
今回のテーマは「データベースのマイグレーション」です。
Djangoにはデータベースマイグレーション機能があります。
これを使うことで作成したモデルを元に自動的にデータベースへテーブルを作成してくれます。
Ruby on Railsに馴染みのある方にはお馴染みの機能だと思います。
初回のマイグレーション
まず、Django標準のモデルのマイグレーションを行いましょう。
(venv)$ ./manage.py migrete
これを行うと、
「OK
OK
OK
OK...」という感じに表示されます。
これで初回のマイグレーションが終わりました。
現段階では自作のモデルはマイグレーションされません。
自作モデルをマイグレーションするにはmakemigrationsを実行する必要があります。
(venv)$ ./manage.py makemigrations
Migrations for 'thread':
thread/migrations/0001_initial.py
- Create model Category
- Create model Comment
- Create model Topic
- Add field topic to comment
- Add field user to comment
上記のような出力が得られマイグレーションの準備が出来ました。確認してみましょう。
(venv)$ ./manage.py showmigrations
thread
[ ] 0001_initial
このような出力が得られます。[]内がからということは未だマイグレーションされていないということです。マイグレーション前にどのようなSQLが実行されるのか確認する癖はつけておいた方が良いと思います。
(venv)$ ./manage.py sqlmigrate thread 0001
これでthreadアプリケーションの0001番のマイグレーション時のSQLを閲覧できます。意図せぬSQLが発行されないか確認しておきましょう。ではマイグレーションしてみましょう。
(venv)$ ./manage.py migrate
以下の様に出力されればOKです。
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions, thread
Running migrations:
Applying thread.0001_initial... OK
#おわりに
今日で10日目になりました。
最近思うことは「説明文を書いて意味があるのかな?」と思っています。
説明文は本家の方で説明されていますし、僕がここで書いたところであまり意味を感じません。
しかし、僕が実際手を動かしている以上説明書きがないと訳がわからなくなってしまいそうなので、これからも説明文を入れていきます。
それではまたまた