학습내용

프로젝트 구조

flask_project
├── config.py
└── flask_app
    └── ...
  • config.py : 해당 프로젝트에 대한 전반적인 설정
  • flask_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 은 파이썬에서 변경된 코드로 인해 달라진 데이터베이스 구조, 모델 등을 추적하고 기록해 데이터베이스에 적용

  • FLASK_APP=flask_app flask db init : 데이터베이스 초기화
  • FLASK_APP=flask_app flask db migrate : 모델 새로 생성 및 변경
  • FLASK_APP=flask_app flask db upgrade : 모델의 변경 내용을 실제 데이터베이스에 적용

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')

0개의 댓글