Skip to content

Настройка базы данных PostgreSQL для работы с Django приложениями

Пример установки и настройки базы данных PostgreSQL для использования с приложениями на Django/Flask работающими в системе Ред ОС версии 8

Базовая настройка системы

Внимание

Все команды в терминале выполняются на уровне доступа "Пользователь", который добавлен в группу Администраторов системы (sudoers)

Установим пакет PostgreSQL

bash
sudo dnf install postgresql16-server

Проводим первичную инициализацию баз данных PostgreSQL

bash
sudo postgresql-16-setup initdb

Запускаем службу

bash
sudo systemctl enable postgresql-16.service --now

Проверить состояние службы можно командой

bash
service postgresql-16 status

Создание базы данных, пользователя, настройка прав доступа

ВАЖНО

Синтаксис SQL чувствителен к регистру (в некоторых случаях), наличию ординарных или двойных кавычек и присутствию точки с запятой в конце каждой команды. Во избежание ошибок внимательно вводите указанные ниже команды, а лучше используйте кнопку "Копировать в буфер".

Переключаемся на пользователя postgres, так как доступ к консоли открыт только у него

bash
sudo su - postgres

Запускаем консоль командой

bash
psql

Создадим базу данных для приложения

sql
CREATE DATABASE 'firstapp';

Создадим пользователя и зададим пароль

sql
CREATE USER firstapp_admin WITH PASSWORD 'firstapp';

Дадим все права на базу данных созданному пользователю

sql
GRANT ALL PRIVILEGES ON DATABASE "firstapp" TO "firstapp_admin";

Наконец, разрешим пользователю создавать новые базы данных

sql
ALTER USER "firstapp_admin" CREATEDB;

Проверим подключение к созданной базе данных

sql
\c "firstapp"

Выходим из консоли PostgreSQL и меняем пользователя postgres на стандартного

bash
\q
exit

На этом подготовка базы данных для работы с приложением Django можно перейти к дальнейшей настройке самого приложения

Настройка приложения Django для работы с базой данных PostgreSQL

Внимание

Подразумевается, что у Вас уже настроено виртуальное окружение Python и создано приложение Django. Если нет, почитать можно в этой заметке

Активируем виртуальное окружение

bash
source /var/www/testdjango/venv/bin/activate

Далее, если у Вас были данные в базе SQLite3 необходимо экспортировать их в JSON командной

bash
python3 -Xutf8 manage.py dumpdata -o data.json

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

bash
pip3 install psycopg2-binary

Наблюдение

Для установки пакета доступна команда pip install psycopg2, но у меня вывалилась ошибка об отсутствии файла конфигурации pg_conf. Эту проблему удалось обойти установкой предварительно собранного бинарника.

Нужно изменить файл settings.py Вашего проекта, а именно раздел DATABASES следующим образом:

py
DATABASES = {
	'default': {
		'ENGINE': 'django.db.backends.sqlite3', 
		'NAME': BASE_DIR / 'db.sqlite3', 
		'ENGINE': 'django.db.backends.postgresql_psycopg2', 
		'NAME': 'firstapp', 
		'USER': 'firstapp_admin', 
		'PASSWORD': 'firstapp', 
		'HOST': '127.0.0.1', 
		'PORT': '5432', 
	}
}

Выполняем миграции базы данных

bash
python3 manage.py migrate --run-syncdb

Вот и все мы перенесли данные из стандартной базы SQLite3 на базу PostgreSQL. Конечно это нужно делать либо на старте проекта, либо на этапе, когда данных в базе не слишком много.

Создано с VitePress