Django База [2023]: Установка PostgreSQL в Django 💾 #33

Django Django База [2023]: Установка PostgreSQL в Django 💾 #33


В этой статье мы покажем, как установить и настроить PostgreSQL для использования в Django проектах. Мы рассмотрим процесс установки PostgreSQL, настройку базы данных в Django, а также подключение к базе данных PostgreSQL с помощью Python библиотеки psycopg2.

Установка postgreSQL на ПК

Если мы хотим установить на локальную машину PostgreSQL, то переходим на официальный сайт и скачиваем Postgres.

Django База [2023]: Установка PostgreSQL в Django 💾 #33
Скачиваем PostgreSQL
Django База [2023]: Установка PostgreSQL в Django 💾 #33
Мы будем использовать версию для Windows, выбираем версию x86-64

После скачивания, начинаем установку. Все оставляем по умолчанию.

Пароль при требовании придумайте любой, я на локальной машине использую: root

Django База [2023]: Установка PostgreSQL в Django 💾 #33
Процесс установки

Установка PostgreSQL в Django

Далее в терминале нам необходимо установить драйвер для работы с СУБД: pip install psycopg2

Результат установки:

Терминал
(venv) PS C:\Users\Razilator\Desktop\Base\backend> pip install psycopg2
Collecting psycopg2
  Using cached psycopg2-2.9.5-cp311-cp311-win_amd64.whl (1.2 MB)
Installing collected packages: psycopg2
Successfully installed psycopg2-2.9.5

[notice] A new release of pip available: 22.3 -> 23.0
[notice] To update, run: python.exe -m pip install --upgrade pip
(venv) PS C:\Users\Razilator\Desktop\Base\backend> 

Запускаем pgAdmin

В меню пуск введите в поиске pgAdmin, подключитесь по созданному паролю при установке.

Django База [2023]: Установка PostgreSQL в Django 💾 #33
Находим, запускаем

Если пароль не работает, можете восстановить его Reset Master Password.

Django База [2023]: Установка PostgreSQL в Django 💾 #33
Подключаемся
Django База [2023]: Установка PostgreSQL в Django 💾 #33
После авторизации

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

Django База [2023]: Установка PostgreSQL в Django 💾 #33
Создаем БД с названием App
Django База [2023]: Установка PostgreSQL в Django 💾 #33
База данных успешно создана

Настройка Django для работы с PostgreSQL

Далее нам необходимо изменить конфигурационный файл settings.py, в нём мы добавим новые настройки для базы данных вместо старых:

Найдите эти настройки:

settings.py
# Database
# https://docs.djangoproject.com/en/4.1/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

И вместо них добавьте следующие:

settings.py
# Database
# https://docs.djangoproject.com/en/4.1/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': '<dbname>',
        'USER': 'postgres',
        'PASSWORD': '<password>',
        'HOST': 'localhost',
        'PORT': 5432,
    }
}

Таким образом мы настроим Django на работу с Postres.

К сожалению наши пользователи и статьи удалятся, поэтому делать лучше Postgres заранее, сразу после создания проекта. Но мы же делаем это как dev версию, поэтому нам не страшно что-то тестировать и удалять. Заодно я почищу папки media, удалю sqlite файл. Примечание: учтите это при деплое, Postgres ставим сразу! Но до него ещё доберемся.

Далее после установки проводим миграции и создаем суперпользователя:

Терминал
(venv) PS C:\Users\Razilator\Desktop\Base\backend> py manage.py makemigrations
No changes detected
(venv) PS C:\Users\Razilator\Desktop\Base\backend> py manage.py migrate       
Operations to perform:
  Apply all migrations: admin, auth, blog, contenttypes, sessions, sites, system, taggit
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying taggit.0001_initial... OK
  Applying taggit.0002_auto_20150616_2121... OK
  Applying taggit.0003_taggeditem_add_unique_index... OK
  Applying taggit.0004_alter_taggeditem_content_type_alter_taggeditem_tag... OK
  Applying taggit.0005_auto_20220424_2025... OK
  Applying blog.0001_initial... OK
  Applying blog.0002_alter_article_slug_alter_article_thumbnail... OK
  Applying blog.0003_alter_article_time_create_comment_and_more... OK
  Applying blog.0004_article_tags... OK
  Applying sessions.0001_initial... OK
  Applying sites.0001_initial... OK
  Applying sites.0002_alter_domain_unique... OK
  Applying system.0001_initial... OK
  Applying system.0002_alter_profile_avatar... OK
  Applying system.0003_alter_profile_avatar_alter_profile_bio_and_more... OK
  Applying system.0004_feedback... OK
(venv) PS C:\Users\Razilator\Desktop\Base\backend> py manage.py createsuperuser

Авторизуюсь с созданного пользователю и добавлю пару статей для будущих уроков.

Django База [2023]: Установка PostgreSQL в Django 💾 #33
Добавленные статьи

Также взглянем на наши таблицы в базе данных:

Django База [2023]: Установка PostgreSQL в Django 💾 #33
Как видите, все таблицы созданы, все работает