この章ではDjangoとMySQLの接続およびデータベース作成についてまとめます
一、DataGripで新しいプロジェクト構造を作成する
構造名はsettingファイル内のデータベース名と一致します
二、テーブル構造の定義
必要なappディレクトリのmodelsファイルにテーブルクラスを作成します(以下は従業員管理システムの例)
from django.db import models
# モデルを作成します
class Division(models.Model):
"""部門テーブル"""
name = models.CharField(verbose_name="部門名", # このパラメータは注釈として機能します
max_length=32)
class Employee(models.Model):
"""従業員テーブル"""
full_name = models.CharField(verbose_name="氏名", max_length=16)
secret = models.CharField(verbose_name="パスワード", max_length=64)
years = models.IntegerField(verbose_name="年齢")
balance = models.DecimalField(verbose_name="残高", max_digits=10, # 全体の数字長
decimal_places=2, # 小数点以下の桁数
default=0) # デフォルト値
join_date = models.DateTimeField(verbose_name="入社日",
auto_now_add=True) # 自動的に現在時刻を追加
# Djangoでの制約
gender_options=(
(1,"男性"),
(2,"女性"),
)
gender=models.SmallIntegerField(verbose_name="性別", choices=gender_options)
# 制約なしの書き方
# division_id = models.BigIntegerField(verbose_name="部門ID")
# 1.制約ありの書き方(データベース制約による)
# -to はどのテーブルと関連付けるかを示します
# -to_field はどのテーブルのどのフィールドと関連付けるかを示します
# 2.この書き方はDjangoの特有の書き方で、フィールド名の後に必ず"_id"が付加されます
# つまり以下のdivisionは、データベース内ではdivision_idとなります
# 3.部門テーブルが削除された場合
# ###3.1 紐付け削除(CASCADE)
division = models.ForeignKey(to="Division", to_field="id", on_delete=models.CASCADE)
# ###3.2 NULLに設定
# division = models.ForeignKey(to="Division", to_field="id", null=True, blank=True, on_delete=models.SET_NULL)
ここでは2つのテーブルが作成されています:部門テーブルDivisionと従業員テーブルEmployee
Employeeテーブルはdivision_idを外部キーとしてDivisionテーブルと関連付けられています
三、テーブルの作成
(方法1)コマンドライン経由
プロジェクトのターミナルで以下を入力します
python manage.py makemigrations
python manage.py migrate
(方法2)PyCharmツール経由
ツールバーの「manage.pyタスクを実行」を開きます
次に以下を入力します
makemigrations
migrate
上記の2つの方法でテーブルを作成すると、DataGripで作成したテーブルを確認できるようになります