Использование PostgreSQL в Django приложении
Заметка по настройке PostgreSQL для работы в Django приложении
Устанавливаем необходимые пакеты
sudo apt-get install postgresql
Повышаем права sudo su
Далее заходим под пользователем postgres
su postgres
Подключаемся к базе
psql
psql (12.9 (Ubuntu 12.9-0ubuntu0.20.04.1))
Type "help" for help.
postgres=#
Создаем пользователя username с паролем password
CREATE ROLE username LOGIN PASSWORD 'password';
И базу данных для приложения с названием database_name с владельцем пользователь username
CREATE DATABASE database_name WITH OWNER=username ENCODING='UTF8';
Выходим из PostgreSQL:
\q
Для моего случая:
CREATE ROLE superapp LOGIN PASSWORD 'superapp';
CREATE DATABASE superapp WITH OWNER=superapp ENCODING='UTF8';
Добавляем в проект модуль для работы с PostgreSQL:
pip install django psycopg2-binary
Прописываем в приложении Django аттрибуты подключения к базе данных:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'superapp',
'USER': 'superapp',
'PASSWORD': 'superapp',
'HOST': '127.0.0.1',
'PORT': '5432',
}
}
Порт может отличаться от 5432, если в системе установлено несколько кластеров PostgreSQL или несколько версий PostgreSQL.
Необходимо выдать разрашение для пользователя подключаться к PostgreSQL.
Это так же поможет для решения проблемы password authentication failed for user "superapp"
$ nano /etc/postgresql/12/main/pg_hba.conf
...
# Database administrative login by Unix domain socket
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
local superapp superapp md5
...
Перезагружаем сервис:
service postgresql restart