[python] Flask에서 데이터베이스 마이그레이션 처리하기

Flask 애플리케이션을 개발할 때 자주 마주치는 문제 중 하나는 데이터베이스 스키마의 변경에 대한 마이그레이션 처리입니다. Flask 애플리케이션에서 데이터베이스 마이그레이션을 처리하기 위해 Alembic과 Flask-Migrate를 사용하여 관리할 수 있습니다.

1. Alembic과 Flask-Migrate 소개

1.1 Alembic

Alembic은 데이터베이스 스키마 변경을 관리하기 위한 파이썬 마이그레이션 툴입니다. SQLAlchemy에 통합되어 있어, SQLAlchemy 모델과 함께 사용하기에 이상적입니다.

1.2 Flask-Migrate

Flask-Migrate는 Flask 애플리케이션에서 Alembic을 쉽게 사용할 수 있도록 해주는 Flask 확장 모듈입니다. Flask 애플리케이션의 데이터베이스 마이그레이션을 관리하는 데 유용합니다.

2. Flask 애플리케이션에 Alembic 및 Flask-Migrate 통합

Flask 애플리케이션에 Alembic과 Flask-Migrate를 통합하는 것은 매우 간단합니다. 먼저, Flask 애플리케이션의 환경 설정 파일에 SQLAlchemy 설정을 추가하고, 데이터베이스 설정을 정의합니다.

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
import os

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db = SQLAlchemy(app)
migrate = Migrate(app, db)

SQLALCHEMY_DATABASE_URI는 사용할 데이터베이스에 따라 적절히 설정해야 합니다.

3. 데이터베이스 마이그레이션 명령어

3.1 초기 마이그레이션 생성

처음으로 마이그레이션을 생성할 때는 아래의 명령어를 통해 초기 마이그레이션을 생성할 수 있습니다.

flask db init

3.2 마이그레이션 스크립트 생성

모델을 변경했을 때, 새로운 마이그레이션 스크립트를 생성하기 위해서는 아래의 명령어를 사용합니다.

flask db migrate -m "마이그레이션 메시지"

-m 플래그를 사용하여 마이그레이션에 대한 설명을 추가해야 합니다.

3.3 마이그레이션 적용

마이그레이션을 실제 데이터베이스에 적용하는 명령어는 아래와 같습니다.

flask db upgrade

4. 결론

Flask 애플리케이션에서 데이터베이스 마이그레이션을 쉽게 관리하기 위해 Alembic과 Flask-Migrate를 사용할 수 있습니다. 이를 통해 데이터베이스 스키마 변경에 따른 복잡함을 줄이고, 안정적인 데이터베이스 관리를 할 수 있게 됩니다.