1

Heroku にデプロイするPython Flask アプリを作成しています。データベースを使用します。ローカル開発ならSqlite、HerokuにデプロイするならPostgresqlを使いたい。どうすればこれを達成できますか?

ボックスと Heroku サーバー間で異なるパッケージ セットを要求する方法がわからないため、行き詰まっています。


これが Ruby アプリだったら、Gemfile

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

次に、Bundler は適切なパッケージを開発環境と本番環境にインストールします。しかし、私はPython の pipに類似したワークフローを知りません

4

1 に答える 1

8

さて、解決すべきことが 2 つあります。

まず、requirements.txtこれはそれほど問題ではありません。すべての要件を同じrequirements.txtファイルに入れることもできます。両方のデータベース バインディングをインストールしても害はありません。ただし、分離したい場合は、requirements.txtデプロイとrequirements-dev.txtローカル開発にのみ使用してください。

さらに重要なのは DB 設定自体です。そのためには、ワンライナー ソリューションがあります。

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 に答える