Django устанавливает переменную окружения через командную строку и использует в миграциях

В продолжение этого вопроса - Укажите .env файл в Django в командной строке или vscode launch.json. Итак, у нас есть файл окружения для dev, test и production - который указан в переменной окружения ENVIRONMENT_FILE. Здесь хранится информация о подключении к базе данных.

Однако у меня не получается передать эту информацию при выполнении команды миграции:

python manage.py migrate

Можно ли установить переменные окружения перед запуском миграций?

Вы можете загрузить переменные среды в свой settings.py файл.

Если у вас есть отдельные .env файлы для отдельных окружений, и они управляются переменной ENVIRONMENT_FILE, вы можете использовать что-то вроде python-dotenv для чтения ваших env файлов,

import os
from dotenv import load_dotenv

load_dotenv(os.getenv("ENVIRONMENT_FILE", ".env"))

Тогда, если ваш env файл выглядит следующим образом

DATABASE_URL=some-url-over-here

вы можете получить доступ к ним в любом месте вашего приложения django, используя os.getenv('DATABASE_URL')

Перед запуском команды миграции можно установить переменные среды. В PowerShell вы можете сделать что-то вроде:

$env:ENVIRONMENT_FILE='test.env'
python manage.py migrate
Вернуться на верх