我正在运行一个Flask应用程序试图通过SQLAlchemy连接到Heroku的Postgres。我在这一行收到错误:
app.config['SQLALCHEMY_DATABASE_URI'] = os.environ['DATABASE_URL']
raise KeyError(key)
KeyError: 'DATABASE_URL'
我在heroku和heroku网站的仪表板中配置了一个数据库,它为DATABASE_URL提供了一个值。当我输入heroku配置:获取DATABASE_URL我得到一个结果网址。
当我输入时:
$python
print os.environ['DATABASE_URL']
我再次收到密钥错误。 DATABASE_URL未显示在此os.environ文件中。我该如何添加它?
我正在运行Windows 10,并尝试将url作为环境变量添加到Windows 10.没有帮助。
如果有人能说清楚这个问题,请回复。
答案 0 :(得分:1)
当我将我的postgress添加到错误的应用程序时,我遇到了类似的问题。 添加数据库时,请确保使用正确的应用程序名称。
heroku addons:create heroku-postgresql:hobby-dev --app <app_name>
这将在你的应用程序上添加postgress db on 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上有多个应用程序,只是对所有这些名称感到困惑。
答案 1 :(得分:0)
我通过在主python代码中添加一行来解决这个错误
Conditional Formatting -> HighLight Cell Rules -> Between
这增加了网址。
答案 2 :(得分:0)
我通过导出环境变量DATABASE_URI
来解决这个问题。
(export DATABASE_URI=<your URI>
)
答案 3 :(得分:0)
所以看起来所有答案都没有帮助。
我将假设您尝试使用 heroku local
命令在本地运行应用程序。
您通过 heroku config
访问的环境变量仅由您通过推送到 heroku 存储库部署的应用程序使用。
要使您的 env vars 在本地可用,您需要在您的项目根目录中创建一个本地 .env 文件并在那里指定环境变量(您可以直接复制它们)。
您可以在 Heroku 文档中找到示例和详细说明:https://devcenter.heroku.com/articles/heroku-local#set-up-your-local-environment-variables
注意:不要像某些人在这里建议的那样在代码中指定您的环境变量。环境变量有时包含敏感信息(例如密码、密钥),如果您将这些数据推送到公共存储库,每个人都将能够看到它。 Heroku 环境变量允许你管理这些变量而不用在版本控制中暴露它们,这也是你应该将 .env 添加到 .gitignore 的原因。