☆☆ 新着記事 ☆☆

2018年5月27日日曜日

Django (6) (7) (8) Databaseの構築・設定


では、データベースの設定。 Djangoには、デフォルトでデータベース機能がついてきます。


C:\Users\Desktop\djangoweb\djangoweb\settings.py内の以下の記述でもわかるように、
sqliteがついてきます。

#settings.pyの初期記述内容
# Database
# https://docs.djangoproject.com/en/dev/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


なので、このDBをアプリで使用できるように設定します。


まずは、Powershellで、アップデートの確認。
runserverを実行。

マイグレートの必要があると表示された場合、プロジェクトのルートディレクトリで、以下を実行。


/python manage.py migrate

するとMigrationが実行される。




すると、先程確認したsetting.pyの最初の方に記述されたAPPSとの連携に必要なマイグレーションが完了します。


#settings.pyの初期記述内容
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]


では、いよいよ 'music' アプリとデータベースの連結作業。

データベース(モデル)の作成

Djangoで、データベースを構築する時は、アプリ・ディレクトリ内の「models.py」に記述していく。


#models.pyの初期記述内容 
from django.db import models

class Album(models.Model):
    artist = models.CharField(max_length=250)
    album_title = models.CharField(max_length=500)
    genre = models.CharField(max_length=100)
    album_logo = models.CharField(max_length=1000)

class Song(models.Model):
    album = models.ForeignKey(Album,on_delete=models.CASCADE)
    file_type = models.CharField(max_length=10)
    song_title = models.CharField(max_length=250)

CharField:
 データベースに記入される属性(キャラクタをして、最大fieldの8bit(?)のcharacter数を指定

on_delete=models
Albumのデータが削除された場合、Songのデータも消去する、という指定。

Activateの前に(1)

さきほど確認していたsetting.pyのINSTALLED_APPSに、追加しておく。

#settings.pyの初期記述内容
INSTALLED_APPS = [
    'music..apps.MusicConfig',               #参照(1)
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

#参照(1)
MusicCongの名前は、Music Directoryの apps.py 内のclassに記載されている名前を
もってくる。 参考としては、music アプリを作成した際に、dafaultで以下のように記載されている。

class MusicConfig(AppConfig):
    name = 'music'

Activateの前に(2)

このまま 'run server'を実行すると、最初に見たように、「適用されていない」という表示が出てしまうので、(現時点では、DjangoのDBにmodels.pyで定義したDBの構造が反映されていない。)

そこで、Powershellからあらかじめ、次のコマンドを実行しておく。


>python manage.py makemigrations music

すると"Album" と "Song" というデータベースが無事に作成されました。 

 



以降、データベースの構造を変えた場合は、必ず、この makemigrations を実行し、
冒頭の

/python manage.py migrate

も、実行する。


蛇足)sqlテーブルを確認。
通常、する必要はありませんが。


>python manage.py sqlmigrate music 0001
001: データテーブルを作成すると自動的にDjangoにより付与されるID

を実行すると、




となり、テーブルが作成されていることが確認できます。



参考)
Django Tutorial for Beginners - 6 - Database Setup
https://youtu.be/IU3LbtbmXXI

0 件のコメント:

コメントを投稿