Ошибка ключа: ‘DATABASE_URL’ при попытке подключиться к Heroku Postgress с помощью SQL Alchemy

#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 .