【问题标题】:Could you explain me how environment variables work here?你能解释一下环境变量是如何在这里工作的吗?
【发布时间】:2020-08-18 05:17:09
【问题描述】:

我有一个在我的计算机上本地开发的项目。现在我想将它部署到 Heroku。 对于本地版本,我使用 SQLite,对于 Heroku 版本,我将使用 PostgreSQL。

我找到了一个代码,它可以让我轻松地结合两个数据库,具体取决于我“访问”程序的位置:本地或 Heroku。

if on_heroku:
    app.config['SQLALCHEMY_DATABASE_URI'] = os.environ['DATABASE_URL']
else:
    app.config['SQLALCHEMY_DATABASE_URI'] = 'postgres://localhost:5432/myblog'

看起来很有趣,但我不明白它背后的全部想法。有人可以向我解释它是如何工作的或推荐我读什么吗?

谢谢!

【问题讨论】:

    标签: python postgresql sqlite heroku deployment


    【解决方案1】:

    更简洁的写法是:

    app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URL', 'postgres://localhost:5432/myblog')
    

    因为其他解决方案需要您编写逻辑来检测您是否在 Heroku on_heroku

    基本上如果环境变量DATABASE_URL存在,取那个值。如果不使用默认值postgres://localhost:5432/myblog

    【讨论】:

      【解决方案2】:

      据我了解,os.environ['DATABASE_URL'] 连接到您的应用程序中提供的 postgres db 插件的 postgres db url。但是,如果您的应用程序没有 Heroku 连接(假设这是 on_heroku 中提供的条件),那么它会访问本地 postgres 数据库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-19
        • 2023-03-27
        • 2011-02-16
        • 2013-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-12
        相关资源
        最近更新 更多