flask | db 적용 및 수정

Jihun Kim·2021년 8월 9일
0

flask

목록 보기
1/1

🍓 flask의 db migration

flask는 python으로 작성 되었기 때문에 python에서 DB 마이그레이션 버전 관리를 제공하는 'alembic'을 이용한다.

  • 모든 migration은 alembic 스크립트에 의해 이루어진다.
  • 버전 관리를 위해 각 인스턴스에는 migration 테이블이 존재하게 된다.
    👉 이 테이블을 통해 어디까지 migration 되었는지 알 수 있으며, 이를 통해 중복 마이그레이션을 방지하고 버전 관리를 할 수 있다.

🍒 Migration 순서

flask model을 아래와 같이 작성한다.👇👇👇

1. model.py에 테이블에 들어갈 내용을 작성한다.

from db_connect import db
from sqlalchemy import Column, String, Integer, Sequence, DateTime
from datetime import datetime


class User(db.Model):
    __tablename__ = 'user'

    id = db.Column(db.Integer, primary_key=True,
                   nullable=False, autoincrement=True)
    user_id = db.Column(db.String(50), nullable=False, unique=True)
    user_pw = db.Column(db.String(255), nullable=False, unique=True)
    user_name = db.Column(db.String(50), nullable=False)
    user_nickname = db.Column(db.String(20), nullable=False)
    user_email = db.Column(db.String(100), nullable=False)

    def __init__(self, user_id, user_pw, user_nickname, user_email, ):
        self.user_id = user_id
        self.user_pw = user_pw
        self.user_nickname = user_nickname
        self.user_email = user_email


class Post(db.Model):
    __tablename__ = 'post'

    id = db.Column(db.Integer, primary_key=True,
                   nullable=False, autoincrement=True)
    user_id = db.Column(db.String(50), db.ForeignKey(
        'user.id'), nullable=False)
    content = db.Column(db.Text(), nullable=False)
    created_at = db.Column(db.DateTime, default=datetime.utcnow())

    def __init__(self, user_id, content):
        self.user_id = user_id
        self.content = content

2. migration 한다.

$ flask db init
$ flask db migrate -m "Initial migration"
$ flask db upgrade

3. 수정 사항이 있을 때 migration 하기

$ flask db stamp ahead
$ flask db migrate
$ flask db upgrade


참고자료

profile
쿄쿄

0개의 댓글