1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Day 10]データベースのマイグレーション

Last updated at Posted at 2021-01-15

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日目になりました。
最近思うことは「説明文を書いて意味があるのかな?」と思っています。
説明文は本家の方で説明されていますし、僕がここで書いたところであまり意味を感じません。
しかし、僕が実際手を動かしている以上説明書きがないと訳がわからなくなってしまいそうなので、これからも説明文を入れていきます。

それではまたまた

←前回:Day 9 モデルの作成
→次回:Day 11 初期データの投入

1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?