Djangoのデータベース設定をデフォルトの sqlite3 から PosgreSQL13 に変更します。
まずは環境から。
Pythonのバージョン
$ python --version
Python 3.8.12
Djangoのバージョン
$ python
>>> import django
>>> django.VERSION
(3, 2, 8, 'final', 0)
Djangoの構成は下記の通りです。
$ mkdir /example
$ cd /example
$ django-admin startproject mysite
$ cd mysite
$ python manage.py startapp myapp
仮想環境(/example/venv)を有効化した状態で、 psycopg2 をインストールします。
$ source /example/venv/bin/activate
psycopg2 をpipインストールをするとエラーになるため、psycopg2-binaryに変更したところインストールは成功したのですが、接続時に「AssertionError: database connection isn’t set to UTC」というエラーが出ました。こちらについては、psycopg2をインストールする際に、バージョンを2.8.5にすることで解消できました。
psycopg2-binaryをバージョン指定でインストールするには=2.8.5を付けます。
(venv)$ pip install psycopg2-binary==2.8.5
Django の setting.py(/example/mysite/mysite/setting.py)の DATABASES をコメントに変更して、下記の設定を入れます。
#DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
#}
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': '<db_name>',
'USER': '<db_username>',
'PASSWORD': '<db_password>',
'HOST': '<db_hostname_or_ip>',
'PORT': '<db_port>'
}
}
setting.py の変更後に migrate することで、PostgreSQLに必要なテーブル等が作成されます。
$ python manage.py makemigrations
$ python manage.py migrate