KeyError异常:' DATABASE_URL'当试图用SQL Alchemy连接到Heroku Postgress时

时间:2016-10-13 19:50:34

标签: heroku sqlalchemy flask-sqlalchemy

我正在运行一个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.没有帮助。

如果有人能说清楚这个问题,请回复。

4 个答案:

答案 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 的原因。