如何在本地要求不同的包装盒?

2024-09-29 02:20:28 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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


这是我用Gemfile编写的Ruby应用程序吗

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

然后Bundler将在开发和生产中安装适当的软件包。但我不知道Python's pip的类似工作流


Tags: box数据库应用程序flasksqliteherokugemon
1条回答
网友
1楼 · 发布于 2024-09-29 02:20:28

你有两件事要解决。在

首先,requirements.txt这不是什么大问题。您可以在同一个requirements.txt文件中抛出所有需求,安装两个数据库绑定不会损害任何东西。但是,如果您想分离,只需使用requirements.txt进行部署,使用{}进行本地开发。在

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

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

由于DATABASE_URL是在Heroku上设置的,而不是在local上设置的(请确保是这样),os.environ.get将找不到它,因此恢复为默认值,即sqlite连接字符串。在

相关问题 更多 >