flask_scripts
웹 모듈 밖에서 스크립트를 관리해주는 라이브러리.
flask의 manage.py에서 많이 쓰임.
스크립트 명령을 실행하기 위해 가장 먼저 파이썬 모듈을 생성한다. 이름은 주로 manage.py로 짓는다.
manage.py 에서는 flask_script의 Manager class의 instance를 만들어 사용한다.
Manager class는 모든 명령을 관리하고, command line에서 어떻게 호출될지를 관리한다.
# manage.py
from flask_script import Manager
from backend import app
manager = Manager(app)
@manager.command
def hello():
print "hello"
if __name__ == '__main__':
manager.run()
manager.run()은 Manager instance가 command line의 입력에 반응하도록 대기시킴.
python manage.py hello
> hello
나는 db를 다룰 때 사용하기 때문에 추가로 flask_migrate 의 MigrateCommand class도 사용하였다.
flask_migrate
Flask 애플리케이션에 대한 SQLAlchemy db migration을 처리(테이블 생성이나 컬럼 추가 같은 !)하는 확장 기능을 가진다.
#manage.py
from flask_migrate import MigrateCommand
from flask_script import Manager
manager = Manager(app)
manager.add_command('db', MigrateCommand)
@manager.command
def init_db():
if check_message('Are you sure to init database ? (Y/n)') == False:
return
"""Initialize database."""
with app.app_context(): # application context 획득.
DBManager.init_db() # 요청 context가 들어오고, app conext를 명시적으로 설정하였다면 backend_model database.py init_db 실행
if __name__ == '__main__':
manager.run()
#cmd
python manage.py init_db
> Are you sure to init database ? (Y/n) Y