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