Files
pg18-1C_for_deb13/use.md

3.5 KiB
Raw Permalink Blame History

Подключение PostgreSQL for 1C 18 к проекту Django

Ниже готовый блок для Django под дефолтные значения из вашего .env:

  • пользователь: admin_1c
  • пароль: StrongPassword123!
  • база: appdb
  • хост: 127.0.0.1
  • порт: 5432

Вариант 1. Быстро вставить прямо в settings.py

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": "appdb",
        "USER": "admin_1c",
        "PASSWORD": "StrongPassword123!",
        "HOST": "127.0.0.1",
        "PORT": "5432",
    }
}

Вариант 2. Подтягивать из .env через python-decouple

Установка:

pip install python-decouple

Пример .env проекта Django:

DB_NAME=appdb
DB_USER=admin_1c
DB_PASSWORD=StrongPassword123!
DB_HOST=127.0.0.1
DB_PORT=5432

Пример settings.py:

from decouple import config

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": config("DB_NAME", default="appdb"),
        "USER": config("DB_USER", default="admin_1c"),
        "PASSWORD": config("DB_PASSWORD", default="StrongPassword123!"),
        "HOST": config("DB_HOST", default="127.0.0.1"),
        "PORT": config("DB_PORT", default="5432"),
    }
}

Вариант 3. Подтягивать из .env без сторонних библиотек

Если переменные окружения уже экспортируются в systemd / docker / shell, можно так:

import os

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": os.getenv("DB_NAME", "appdb"),
        "USER": os.getenv("DB_USER", "admin_1c"),
        "PASSWORD": os.getenv("DB_PASSWORD", "StrongPassword123!"),
        "HOST": os.getenv("DB_HOST", "127.0.0.1"),
        "PORT": os.getenv("DB_PORT", "5432"),
    }
}

Если хотите использовать значения прямо из вашего серверного .env

Обычно лучше не читать серверный .env установщика напрямую из Django, а завести отдельные переменные приложения:

DB_NAME=appdb
DB_USER=admin_1c
DB_PASSWORD=StrongPassword123!
DB_HOST=127.0.0.1
DB_PORT=5432

Это удобнее, чем тянуть в приложение служебные переменные вроде:

  • REPO_ADD_URL
  • PGPRO_BIN_DIR
  • SERVICE_NAME
  • INSTALL_MODE

Проверка подключения

После настройки можно проверить так:

python manage.py migrate
python manage.py showmigrations

Если драйвер PostgreSQL еще не установлен:

pip install psycopg[binary]

Либо классический вариант:

pip install psycopg2-binary

Рекомендуемый итоговый блок для Django-проекта

from decouple import config

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": config("DB_NAME", default="appdb"),
        "USER": config("DB_USER", default="admin_1c"),
        "PASSWORD": config("DB_PASSWORD", default="StrongPassword123!"),
        "HOST": config("DB_HOST", default="127.0.0.1"),
        "PORT": config("DB_PORT", default="5432"),
        "CONN_MAX_AGE": 60,
        "OPTIONS": {},
    }
}