138 lines
3.5 KiB
Markdown
138 lines
3.5 KiB
Markdown
# Подключение PostgreSQL for 1C 18 к проекту Django
|
||
|
||
Ниже готовый блок для Django под дефолтные значения из вашего `.env`:
|
||
|
||
- пользователь: `admin_1c`
|
||
- пароль: `StrongPassword123!`
|
||
- база: `appdb`
|
||
- хост: `127.0.0.1`
|
||
- порт: `5432`
|
||
|
||
## Вариант 1. Быстро вставить прямо в `settings.py`
|
||
|
||
```python
|
||
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`
|
||
|
||
Установка:
|
||
|
||
```bash
|
||
pip install python-decouple
|
||
```
|
||
|
||
Пример `.env` проекта Django:
|
||
|
||
```env
|
||
DB_NAME=appdb
|
||
DB_USER=admin_1c
|
||
DB_PASSWORD=StrongPassword123!
|
||
DB_HOST=127.0.0.1
|
||
DB_PORT=5432
|
||
```
|
||
|
||
Пример `settings.py`:
|
||
|
||
```python
|
||
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, можно так:
|
||
|
||
```python
|
||
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, а завести отдельные переменные приложения:
|
||
|
||
```env
|
||
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`
|
||
|
||
## Проверка подключения
|
||
|
||
После настройки можно проверить так:
|
||
|
||
```bash
|
||
python manage.py migrate
|
||
python manage.py showmigrations
|
||
```
|
||
|
||
Если драйвер PostgreSQL еще не установлен:
|
||
|
||
```bash
|
||
pip install psycopg[binary]
|
||
```
|
||
|
||
Либо классический вариант:
|
||
|
||
```bash
|
||
pip install psycopg2-binary
|
||
```
|
||
|
||
## Рекомендуемый итоговый блок для Django-проекта
|
||
|
||
```python
|
||
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": {},
|
||
}
|
||
}
|
||
```
|