본문 바로가기
BE/Flask

flask와 mysql 연동

by 벼락코드 2025. 2. 8.

플라스크와 MySQL연동

플라스크와 가장 많이 사용되는 DB

 

  1. 연동 시작
    1. 데이터 베이스 생성: 'db_name'에 해당하는 MySQL 데이터 베이스 생성 필요
    2. 환경에 맞는 SQLALCHEMY_DATABASE_URL 기반 접속 설정 수정
    3. 플라스크 버전 확인
  2. 필요한 패키지
    1. Flask-SQLAlchemy
    2. pymysql
  3. 플라스크 애플리케이션과 SQLAlchemy 설정
    1. MySQL 서버 기본포트번호: 3306
'''SQLAlchemy는 모델 클래스에 명시적으로 생성자(__init__)를 정의하지 않아도 됨. 내부적으로 제공하기 때문'''
class User(db.Model):
  # 테이블 이름 지정. SQLAlchemy는 모델 클래스 이름을 소문자화하여 테이블 이름으로 사용
  __tablename__ = 'user'

  id = db.Column(db.Integer, primary_key=True)
  username = db.Column(db.String(80), unique=True, nullable=False)
  email = db.Column(db.String(120), unique=True, nullable=False)

  def __repr__(self):
    return '<User %r>' % self.user.name


# 애플리케이션 컨텍스트 내 DB 테이블 생성
with app.app_context():
  # db.create_all(): 모델에 정의된 모든 테이블을 데이터베이스에 생성 (애플리케이션 처음 실행시 db초기화)
  db.create_all()

 

 

Flask-Migrate

Alembic기반, SQLAlchemy DB를 쉽게 마이그레이션할 수 있도록 도와주는 확장

데이터베이스 스키마의 버전 관리 효율적 수행 가능

  • 스키마 변경 추적 & 버전 관리
  • 팀 작업: 로컬 베이스 상태 일관하게 유지
  • 배포 용이성: 프로덕션 데이터베이스에 새로운 변경을 안전하게 적용
  • 데이터 손실 방지: 스키마가 변경되더라도 기존 데이터를 보존하면서 안전하게 마이그레이션 가능