「Djangoパーフェクトマスター」makemigrationsコマンドで作られるSQLについて【Udemyで学習】

www.youtube.com

このレクチャーでは「makemigrationsコマンドで作られるSQLについて」説明します。

makemigrationsコマンドを実行すると、Djangoは、モデルの変更を検知して、差分をマイグレーションファイルとして保存します。マイグレーションファイルは、アプリケーションディレクトリ直下の、migrationsディレクトリに保存されます。スライドで、投票アプリのモデルを新規作成した後、初めて実行したmakemigrationsコマンドで自動作成された、マイグレーションファイルの内容をご覧いただいていています。モデルを新規作成したので、二つのテーブルを新規作成するマイグレーションファイルです。ご覧の通り、Pythonスクリプトです。CreateModelやQuestion、Choiceなどのキーワードを確認することができます。マイグレーションファイルは、開いて内容を確認する機会は少ないと思いますので、ここでのスクリプトの詳細な説明は、割愛します。

スライドでご覧の sqlmigrate コマンドを実行すると、マイグレーションファイルが、migrateコマンドで、どのようなSQLを実行するのか、確認することができます。実行結果を確認すると、テーブルを新規作成するCREATE TABLE文や、インデックスを作成するCREATE INDEX文などが、確認できます。

作成されるSQLのポイントを、7つ紹介します。

一つ目は、作成されるSQLについてです。作成されるSQLは、使用しているデータベースによって、異なるということです。前のスライドでご覧いただいたSQLは、SQLiteの出力です。

二つ目は、テーブル名についてです。テーブル名は、アプリケーションの名前とモデルの小文字表記を、アンダースコアで結合したものになります。例えば、polls_questionやpolls_choiceなどです。なお、この仕組みはカスマイズ可能です。

三つ目は、主キーのidについてです。主キーのidは、モデルクラスのフィールドで宣言していなくても、自動的に追加されます。この仕組みもカスマイズ可能です。

四つ目は、外部キーのカラム名についてです。外部キーのカラム名は、外部キーのフィールド名に"_id"を追加します。例えば、question_idなどです。この仕組みもカスマイズ可能です。

五つ目は、外部キーによる関連についてです。外部キーのリレーションシップは、データベースに対しFOREIGN KEY制約を伝えます。前のスライドでご覧いただいたSQLiteの例では、question_idカラムの指定でREFERENCESキーワードを使用し、FOREIGN KEYと同等の制約を施しています。

六つ目は、自動採番についてです。idなどの、自動採番カラムの型については、データベースごとに、自動的に選択され、生成されます。SQLiteの場合はautoincrement、PostgreSQLの場合はserialが選択されます。フィールド名のクォーティングも、適切に選択されるので安心してください。

7つ目は、sqlmigrateについてです。sqlmigrateコマンドはSQLを表示するだけで、実際にデータベースに対して、SQLを実行することはありません。Djangoマイグレーションが、どのようなSQLを発行するのか確認するときに、利用するコマンドです。

以上で「makemigrationsコマンドで作られるSQLについて」の説明を終わります。

★★★ 続きはUdemyで ★★★
https://www.udemy.com/course/django_master/?referralCode=3B5D0AF66B09A7B8DD25
★★★ コース内でお逢いできることを楽しみにしています。 ★★★