Python、Djangoの勉強(3)
2020/03/22
今日の目標
- PostgreSQLをA5で操作する
- DjangoでPostgreSQLを操作する
A5でデータベース接続は難しいことはない。
と思ったらエラーが発生した。どうやら古いA5がpostgreSQL12に対応していないらしい
参考:トピック: 【不具合報告】接続エラー |
最新のA5にして接続OK。
以下、DjangoでpostgreSQLの操作に挑戦。
参考: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の管理画面からは既にデータベースに作成されているテーブルを操作できないようだ。
Djangoにアプリケーションを作成し、モデルを追加してみる。
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でテーブルが作成されていることを確認。
Djangoの管理サイトで作成したモデルを編集できるようにする。
cms/admin.pyを編集。
from django.contrib import admin
from cms.models import Book, Impression
admin.site.register(Book)
admin.site.register(Impression)
管理画面でデータを登録 A5でデータが登録されていることを確認
目標まで達成したので、当初の予定通り公式のチュートリアルを実施する。