今更一から勉強しよう

勉強のノート。

Python、Djangoの勉強(3)

2020/03/22

今日の目標 - PostgreSQLをA5で操作する - DjangoPostgreSQLを操作する
A5でデータベース接続は難しいことはない。
f:id:ebi40:20200322113024p:plain

と思ったらエラーが発生した。どうやら古いA5がpostgreSQL12に対応していないらしい
f:id:ebi40:20200322114009p:plain
参考:トピック: 【不具合報告】接続エラー |
最新のA5にして接続OK。
以下、DjangopostgreSQLの操作に挑戦。
参考:Djangoで使うDBをSQLiteからPostgreSQLに変更する手順 - Qiita
参考:DjangoにPostgreSQLを適用する - Qiita

Djangoにpsycopg2をインストール。

pip install psycopg2

Djangoのsettings.pyを編集。

DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'test', # 作ったDB名
'USER': 'test', # 作ったユーザー名
'PASSWORD': 'test', # ユーザー作った時のパスワード
'HOST': 'localhost',
'PORT': '5432',
}
}

マイグレート。1回目は失敗したが、もう一度psycopg2をインストールしたらうまくいった。なんだ?

python manage.py migrate

スーパーユーザ作成。python、password
このパスワードは一般的すぎますと怒られる。

python manage.py createsuperuser

Djangoの管理画面からは既にデータベースに作成されているテーブルを操作できないようだ。
f:id:ebi40:20200322131504p:plain
Djangoにアプリケーションを作成し、モデルを追加してみる。

python manage.py startapp cms

models.pyにデータを定義。面倒なので前に使った演習をそのまま使う。
settings.pyにcms/apps.pyの値を設定する。

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'cms.apps.CmsConfig',
]

モデルの変更を反映。

python manage.py makemigrations cms python manage.py migrate cms

A5でテーブルが作成されていることを確認。
f:id:ebi40:20200322134501p:plain

Djangoの管理サイトで作成したモデルを編集できるようにする。
cms/admin.pyを編集。

from django.contrib import admin
from cms.models import Book, Impression

admin.site.register(Book)
admin.site.register(Impression)

管理画面でデータを登録 f:id:ebi40:20200322134248p:plain A5でデータが登録されていることを確認 f:id:ebi40:20200322134606p:plain


目標まで達成したので、当初の予定通り公式のチュートリアルを実施する。