脱職エントリー

いつか退職エントリーを書いて一人前のエンジニアを名乗りたい

Django入門その後に(4)〜繋がるDB〜

ここではデータベースとDjangoを繋げます。
繋がるストーリー、カラフルストーリーです。(意味不明)

youtu.be

カラフルストーリーのPVは声優系PVとしては珠玉の出来映えです。
10代の素材を損なわない、制服という分かりやすい記号に、2人のダンシングスキルそして、ワンカットPVという努力と工夫の詰まった大変素晴らしいものです。

1.データベースの設定はどこで決める?

データベースへの接続設定はsettinngs.pyに書きます。

settings.py

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

標準ではsqlite3に繋がるようになってます。
sqlite3ってなんだよって人もいると思いますがその謎はすぐに解けます。

2.データベースの設定を実際のデータベースに反映させよう

とりあえず何も考えずにマイグレーション(DjangoとDBを同期させる)という処理をやってみましょう。

$ python manage.py migrate

  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK

なんか色々動きましたね!

もう一回フォルダを見てみましょう

├── db.sqlite3: ★なんか出来てる!
├── info
│    (中略)

├── manage.py
└── seiyuu_info
    ├── 中略

db.sqlite3というのがデータベースの実体になります。

3.sqlite3に入って実際に作成されたデータベースを確認してみよう

今回生成されたデータベースの中に入ってみましょう。

sqlite3 [接続先のデータベース]
$  sqlite3 db.sqlite3
SQLite version 3.16.0 2016-11-04 19:09:39
Enter ".help" for usage hints.
sqlite> 
sqlite> 
sqlite> 
sqlite> 
sqlite> .tables  ★このコマンドでテーブルの一覧が見れます
auth_group                  auth_user_user_permissions
auth_group_permissions      django_admin_log          
auth_permission             django_content_type       
auth_user                   django_migrations         
auth_user_groups            django_session            
sqlite> 

先ほどのmigrateというコマンドで色々できました。
じゃこれって何なんだろうというのも絵にしました。

マイグレートについて
f:id:darakunomiti:20170503183007j:plain

ここまでデータベースの定義なんて何一つ書いてませんが、テーブルがいくつかできてますね。
何かというと、Djangoは標準でテーブルをいくつか作ります。例えばセッション管理とかユーザー情報みたいなところを標準で生成します。
うーん、至れり尽くせりですね

次は実際に声優情報のデータベースを追加していきましょう。

Django入門その後に(5)〜モデルを作ろう〜 - 脱職エントリー