Не могли бы вы объяснить, как здесь работают переменные среды? - PullRequest
0 голосов
/ 03 мая 2020

У меня есть проект, который я разработал локально на моем компьютере. Теперь я хочу развернуть его в Heroku. Для локальной версии я использую SQLite, а для версии Heroku я собираюсь использовать PostgreSQL.

Я нашел код, который легко позволяет мне объединить две базы данных в зависимости от того, где я «достигаю» программу: локально или на Heroku.

if on_heroku:
    app.config['SQLALCHEMY_DATABASE_URI'] = os.environ['DATABASE_URL']
else:
    app.config['SQLALCHEMY_DATABASE_URI'] = 'postgres://localhost:5432/myblog'

Выглядит интересно, но я не понимаю всей идеи. Может ли кто-нибудь объяснить мне, как это работает, или порекомендовать мне, что читать?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 03 мая 2020

Насколько я понимаю, os.environ ['DATABASE_URL'] подключается к URL-адресу postgres db надстройки postgres db, предоставленной в вашем приложении. Однако, если ваше приложение не имеет соединения heroku (при условии, что это условие, указанное в on_heroku), оно получает доступ к локальному postgres db.

0 голосов
/ 04 мая 2020

Более чистый способ написать это:

app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URL', 'postgres://localhost:5432/myblog')

, потому что другое решение требует, чтобы вы написали logi c, чтобы определить, находитесь ли вы на Heroku on_heroku.

В основном если переменная окружения DATABASE_URL существует, примите ее значение. Если не использовать значение по умолчанию postgres://localhost:5432/myblog

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...