#heroku #sqlalchemy #flask-sqlalchemy
#heroku #sql — алхимия #flask-sqlalchemy
Вопрос:
Я запускаю приложение Flask, пытающееся подключиться к Postgres Heroku через SQLAlchemy. Я получаю сообщение об ошибке в этой строке:
app.config['SQLALCHEMY_DATABASE_URI'] = os.environ['DATABASE_URL']
raise KeyError(key)
KeyError: 'DATABASE_URL'
Я подготовил базу данных в heroku, и на панели инструментов на сайте heroku она дает значение для DATABASE_URL . Когда я набираю heroku config: get DATABASE_URL, я получаю результирующий URL-адрес.
Когда я набираю текст в:
$python
print os.environ['DATABASE_URL']
Я снова получаю ошибку ключа. DATABASE_URL не отображается в этом файле os.environ. Как мне его добавить?
Я использую Windows 10 и попытался добавить URL-адрес в качестве переменной среды в Windows 10. Не помогло.
Если кто-нибудь может пролить свет на этот вопрос, пожалуйста, ответьте.
Комментарии:
1. Как вы пытались добавить DATABASE_URL в качестве переменной среды?
2. Я зашел в Панель управления> Система> Дополнительно> Переменные среды и добавил новую системную переменную с именем DATABASE_URL и гиперссылку, предоставленную Heroku.
3. Я также попытался ввести os.eviron[‘DATABASE_URL’] = <url postgres> и там написано «Такого файла или каталога нет»
4. Я исправил эту ошибку, добавив строку в свой код python
Ответ №1:
У меня была аналогичная проблема, когда я добавил свой postgress в неправильное приложение. Убедитесь, что вы используете правильное имя приложения при добавлении своей базы данных.
heroku addons:create heroku-postgresql:hobby-dev --app <app_name>
Это добавит postgress db в ваше приложение на heroku и заполнит переменную среды DATABASE_URL.
heroku config --app <app_name>
Это отобразит вашу переменную среды, и она должна быть там как DATABASE_URL.
=== app_name Config Vars
APP_SETTINGS: config.ProductionConfig
DATABASE_URL: postgres://akxmhwgyeysadasdvulk:f8efa996f6c4862acasad2fdd7f59177454b1127251444b1db12e3184f8dd2ca824@ec2-54-225-200-15.compute-1.amazonaws.com:5432/dd09pi392unnk8
Я знаю, это может показаться немного глупым, но у меня была именно эта проблема.
У меня более одного приложения на heroku, и я просто запутался со всеми этими именами.
Ответ №2:
Я исправил эту ошибку, добавив строку в свой основной код python
os.environ['DATABASE_URL'] = <URL>
Это добавило URL-адрес.
Ответ №3:
Я исправил это, экспортировав переменную среды DATABASE_URI
. ( export DATABASE_URI=<your URI>
)
Ответ №4:
Похоже, ни один из ответов не помог.
Я предполагаю, что вы пытаетесь запустить приложение локально с помощью heroku local
команды.
Переменные среды, к которым вы получаете доступ, heroku config
используются только приложениями, которые вы развернули, нажав на репозиторий heroku.
Чтобы ваши переменные env были доступны локально, вам необходимо создать локальный файл .env в корневом каталоге вашего проекта и указать там переменные среды (вы можете просто скопировать их).
Вы можете найти пример и подробное описание в документах Heroku: https://devcenter.heroku.com/articles/heroku-local#set-up-your-local-environment-variables
Примечание: Никогда не указывайте переменные среды в коде, как некоторые люди предложили здесь. Переменные среды иногда содержат конфиденциальную информацию (например, пароли, секретные ключи), если вы когда-нибудь отправите эти данные в общедоступный репозиторий, все смогут их увидеть. Переменные среды Heroku позволяют управлять такими переменными, не предоставляя их в системе управления версиями, это также причина, по которой вы должны добавить .env в .gitignore .