Установка и настройка PostgreSQL в проекте на Django

lepiloff

Oct. 24, 2017, 4:07 p.m.

Установку будем призводить глобально,  это позволит использовать PostgreSQL в нескольких проектах.

Для начала обновим систему

sudo apt-get update
sudo apt-get upgrade

Установка допонительных библиотек для взаимодействия PostgreSQL с Python/Django

sudo apt-get install  python3-dev libpq-dev 

Переходим к установке PostgreSQL 

sudo apt-get install postgresql postgresql-contrib

По умолчанию PostgreSQL создает БД и пользователя под именем postgres, все установки и изменения возможны если войти в сервис под этим именем

sudo -u postgres psql

Приглашение командной строки примет вид postgres=#

Создадим базу данных для нашего проекта и нового пользователя (использование точки с запятой в конце команды обязательно при работе в БД )

CREATE DATABASE myprojectbd;
CREATE USER myprojectuser WITH PASSWORD 'password';

Выполним минимальную настройку новой базы 

ALTER ROLE myprojectuser SET client_encoding TO 'utf8';
ALTER ROLE myprojectuser SET default_transaction_isolation TO 'read committed';
ALTER ROLE myprojectuser SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE myprojectbd TO myprojectuser;

Для выхода введите

\q

Теперь надо сделать настройки для конкретного проекта.  Установим внутри нашего виртуального окружения пакет для взаимодействия с PostgreSQL

(mysite)$ pip install psycopg2

Сразу после установки, наш проект настроен на работу с простой БД SQLite. Для переключения на взаимодействие с PostgreSQL  надо изменить содержимое DATABASES в settings.py, использовав название созданной выше БД, имя пользователя и пароль.:

settings.py

.....
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'myprojectbd',
        'USER': 'myprojectuser',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '',
    }
}
.....

На этом первоначальная настройка PostgeSQL для Django закончена.

django, postgresql