flask | db 적용 및 수정
🍓 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
참고자료
Author And Source
이 문제에 관하여(flask | db 적용 및 수정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@combi_jihoon/flask-db-적용-및-수정저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)