플라스크와 MySQL연동
플라스크와 가장 많이 사용되는 DB
- 연동 시작
- 데이터 베이스 생성: 'db_name'에 해당하는 MySQL 데이터 베이스 생성 필요
- 환경에 맞는 SQLALCHEMY_DATABASE_URL 기반 접속 설정 수정
- 플라스크 버전 확인
- 필요한 패키지
- Flask-SQLAlchemy
- pymysql
- 플라스크 애플리케이션과 SQLAlchemy 설정
- 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를 쉽게 마이그레이션할 수 있도록 도와주는 확장
데이터베이스 스키마의 버전 관리 효율적 수행 가능
- 스키마 변경 추적 & 버전 관리
- 팀 작업: 로컬 베이스 상태 일관하게 유지
- 배포 용이성: 프로덕션 데이터베이스에 새로운 변경을 안전하게 적용
- 데이터 손실 방지: 스키마가 변경되더라도 기존 데이터를 보존하면서 안전하게 마이그레이션 가능
'BE > Flask' 카테고리의 다른 글
| flask logging: 로깅 레벨 (1) | 2025.02.08 |
|---|---|
| flask blueprint(블루프린트) 클래스 객체 생성 및 라우팅 모듈화 (0) | 2025.02.05 |
| flask 정적 파일 처리 및 코드 수정 없는 변경 (0) | 2025.02.02 |
| flask template engine, Jinja2: 매크로(macro), 템플릿 상속 (0) | 2025.02.02 |
| flask template engine, Jinja2: 변수, if문, 필터 요약 정리 (0) | 2025.01.29 |