1

我正在编写一个 Python Flask 应用程序以部署在 Heroku 上。它将使用数据库。对于本地开发,我想使用 Sqlite,但是当部署到 Heroku 时,我想使用 Postgresql。我怎样才能做到这一点?

我被卡住了,因为我不知道如何在我的盒子和 Heroku 服务器之间需要一组不同的包。


如果这是一个 Ruby 应用程序,我会在我的Gemfile

gem "pg", :group => :production
gem "sqlite3", :group => :development

然后 Bundler 将在开发和生产中安装适当的包。但我不知道Python 的 pip有任何类似的工作流程

4

1 回答 1

8

好吧,你有两件事要解决。

首先,requirements.txt这不是什么大问题。您可以将所有要求放在同一个requirements.txt文件中,同时安装两个数据库绑定不会造成任何损害。但是,如果您想分离,只需requirements.txt用于部署和requirements-dev.txt本地开发。

更重要的是数据库设置本身,为此您有一个单一的解决方案:

app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get(
    'DATABASE_URL', 'sqlite:////tmp/test.db')

因为DATABASE_URL是在 Heroku 上设置的,但不是在本地设置的(确保是这种情况),os.environ.get所以找不到它,因此恢复为默认值,即 sqlite 连接字符串。

于 2012-11-28T07:07:53.107 回答