我有一个在计算机上本地开发的项目。现在,我要将其部署到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'
看起来很有趣,但我不了解它的全部含义。有人可以向我解释它的工作原理或向我推荐阅读什么内容吗?
谢谢!
答案 0 :(得分:2)
据我所知,os.environ ['DATABASE_URL']连接到应用程序中提供的postgres db附件的postgres db url。但是,如果您的应用程序没有heroku连接(假设这是on_heroku
中提供的条件),则它将访问本地postgres数据库。
答案 1 :(得分:0)
一种更简洁的书写方式是:
app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URL', 'postgres://localhost:5432/myblog')
因为另一种解决方案要求您编写逻辑以检测您是否在Heroku on_heroku
上。
基本上,如果环境变量DATABASE_URL
存在,则取其值。如果不使用默认值postgres://localhost:5432/myblog