ファクトリなるものをつかってflaskアプリの生成、初期化を行う
from flask import Flask
def create_app(test_config=None):
app = Flask(__name__, instance_relative_config=True)
app.config.from_mapping(
SECRET_KEY='dev',
DATABASE=os.path.join(app.instance_path, 'データベースファイル名'),
)
なぜか
- 開発環境と本番環境で異なるデータベース設定を使用したいと考えています。
- 機密性の高いSECRET_KEYやデータベースのURLは公開したくない(公開されるべきではありません。)
したがって、
- 開発環境: ローカルマシン上で動作し、SQLiteデータベースdev.sqliteを使用
- 本番環境: サーバー上で動作し、PostgreSQLデータベースを使用
という使い分けをしたい。
instance_relative_config=Trueを使用すると、Flaskはインスタンスフォルダ内の設定ファイルから設定を読み込むようになります。このフォルダは通常、アプリケーションのルートディレクトリの外に配置され、バージョン管理システムに含まれません。
以下のようにファイルを切ります。
/instance
development.py
production.py
staging.py
例えばinstance/development.pyはこんな感じです。
# instance/development.py
SECRET_KEY = 'development_key'
DEBUG = True
DATABASE_URI = 'sqlite:///development.db'