Получите адрес базы данных heroku и учетные данные вместо DATABASE_URL - PullRequest
0 голосов
/ 28 октября 2018

Я развертываю приложение, которое требует, чтобы информация о БД передавалась как отдельные аргументы, например,

$ someapp --db-host=example.com --db-port=5433 --db-name=mydb --db-user=me --db-password=mypass

Если посмотреть на то, что предлагает heroku, то похоже, что единственная доступная вещь - это DATABASE_URL.Конечно, я могу разобрать его значение в Procfile и извлечь все необходимое, в настоящее время я думаю о чем-то вроде небольшого вспомогательного скрипта, например parse_db_url.py:

#!/usr/bin/env python3
import os
from sqlalchemy.engine.url import make_url


if __name__ == '__main__':
    url = make_url(os.environ.get('DATABASE_URL'))
    env = f'''PG_USER={url.username}
PG_PASSWORD={url.password}
PG_HOST={url.host}
PG_PORT={url.port}
PG_DBNAME={url.database}'''
    print(env)

и eval ingэто в Procfile:

web: eval $(python parse_db_url.py) && someapp --db-host=$PG_HOST ...

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

...