FLASK-2


学習内容
プロジェクト構造
flask_project
├── config.py
└── flask_app
    └── ...
  • config.py:プロジェクトの全体設定
  • フラスコapp:アプリケーションフォルダ、独立パッケージのように
  • を管理
    アプリケーション構造
    flask_app
    ├── __init__.py
    ├── models.py
    ├── services
    │   └── api.py
    ├── static
    │   └── style.css
    ├── templates
    │   └── index.html
    └── views
        └── user_routes.py
    flask SQLAlchemy
    #__init__.py
    
    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    db = SQLAlchemy() #함수 바깥에 db를 생성해야 다른 파일들에서 import 가능
    
    def create_app():
        app = Flask(__name__)
        app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite+pysqlite:///test.db'
    
        db.init_app(app)
    
        from flask_app import main_routes #함수 내부에서 import 해주어야 circular import 문제가 발생하지않음.
        app.register_blueprint(main_routes.bp)
    
        return app
    
    (... 생략 ...)
    Flask-Migrate
    Flask-Migrateは、Pythonで変更されたコードによって変更されたデータベース構造、モデルなどを追跡して記録し、データベースに適用します.
  • FLASK APP=フラスコappフラスコdbinit:データベース初期化
  • FLASK APP=フラスコappフラスコdbmigrate:
  • モデルの作成と変更
  • FLASK APP=フラスコappフラスコdbupgrade:モデル変更を実際のデータベース
  • に適用する
    config
    ファイルを個別に作成および設定できます
    #config.py
    
    class DevelopmentConfig(Config):
        DEBUG = True
        SQLALCHEMY_DATABASE_URI = 'postgresql+psycopg2://{user}:{pw}@{url}/{db}'.format(
            user='',
            pw='',
            url='',
            db=''
        )
    #__init__.py
    
    #~생략
    def create_app():
      if app.config["ENV"] == 'production':
      #export FLASK_ENV=production 등으로 설정가능
      
              app.config.from_object('config.ProductionConfig')