Настройка базы данных PostgreSQL для работы с Django приложениями
Пример установки и настройки базы данных PostgreSQL для использования с приложениями на Django/Flask работающими в системе Ред ОС версии 8
Базовая настройка системы
Внимание
Все команды в терминале выполняются на уровне доступа "Пользователь", который добавлен в группу Администраторов системы (sudoers)
Установим пакет PostgreSQL
sudo dnf install postgresql16-serverПроводим первичную инициализацию баз данных PostgreSQL
sudo postgresql-16-setup initdbЗапускаем службу
sudo systemctl enable postgresql-16.service --nowПроверить состояние службы можно командой
service postgresql-16 statusСоздание базы данных, пользователя, настройка прав доступа
ВАЖНО
Синтаксис SQL чувствителен к регистру (в некоторых случаях), наличию ординарных или двойных кавычек и присутствию точки с запятой в конце каждой команды. Во избежание ошибок внимательно вводите указанные ниже команды, а лучше используйте кнопку "Копировать в буфер".
Переключаемся на пользователя postgres, так как доступ к консоли открыт только у него
sudo su - postgresЗапускаем консоль командой
psqlСоздадим базу данных для приложения
CREATE DATABASE 'firstapp';Создадим пользователя и зададим пароль
CREATE USER firstapp_admin WITH PASSWORD 'firstapp';Дадим все права на базу данных созданному пользователю
GRANT ALL PRIVILEGES ON DATABASE "firstapp" TO "firstapp_admin";Наконец, разрешим пользователю создавать новые базы данных
ALTER USER "firstapp_admin" CREATEDB;Проверим подключение к созданной базе данных
\c "firstapp"Выходим из консоли PostgreSQL и меняем пользователя postgres на стандартного
\q
exitНа этом подготовка базы данных для работы с приложением Django можно перейти к дальнейшей настройке самого приложения
Настройка приложения Django для работы с базой данных PostgreSQL
Внимание
Подразумевается, что у Вас уже настроено виртуальное окружение Python и создано приложение Django. Если нет, почитать можно в этой заметке
Активируем виртуальное окружение
source /var/www/testdjango/venv/bin/activateДалее, если у Вас были данные в базе SQLite3 необходимо экспортировать их в JSON командной
python3 -Xutf8 manage.py dumpdata -o data.jsonУстановим дополнительный Python пакет для работы с базой данных PostgreSQL
pip3 install psycopg2-binaryНаблюдение
Для установки пакета доступна команда pip install psycopg2, но у меня вывалилась ошибка об отсутствии файла конфигурации pg_conf. Эту проблему удалось обойти установкой предварительно собранного бинарника.
Нужно изменить файл settings.py Вашего проекта, а именно раздел DATABASES следующим образом:
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',
}
}Выполняем миграции базы данных
python3 manage.py migrate --run-syncdbВот и все мы перенесли данные из стандартной базы SQLite3 на базу PostgreSQL. Конечно это нужно делать либо на старте проекта, либо на этапе, когда данных в базе не слишком много.