Chapter 3-3 Flask-SQLAlchemy 모델 구축(models.py)

2025. 4. 21. 10:18·Flask

📌 개념 정리

3-3. Flask-SQLAlchemy 모델 구축

💻 전체 코드 예시 (models.py)

from db import db

class User(db.Model):
    __tablename__ = "users"

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), unique=True, nullable=False)
    email = db.Column(db.String(100), unique=True, nullable=False)
    boards = db.relationship('Board', back_populates='author', lazy='dynamic')

	# address = db.Column(db.String(120), unique=True, nullable=False)  # 추가된 필드

class Board(db.Model):
    __tablename__ = "boards"

    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    content = db.Column(db.String(200))
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    author = db.relationship('User', back_populates='boards')

🚦 단계별 프로세스 흐름 및 설명

📍 Step 1: 데이터베이스 모델 설정

from db import db

class User(db.Model):
    __tablename__ = "users"
  • db.Model을 상속받아 SQLAlchemy 모델 클래스를 정의합니다.
  • __tablename__으로 데이터베이스 내 테이블 이름을 설정합니다.

📍 Step 2: 사용자(User) 모델 정의

id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), unique=True, nullable=False)
email = db.Column(db.String(100), unique=True, nullable=False)
boards = db.relationship('Board', back_populates='author', lazy='dynamic')
  • id: 사용자 고유 식별자로 설정됩니다.
  • name, email: 고유하며 필수적으로 입력해야 하는 사용자 정보입니다.
  • boards: Board 모델과의 관계를 설정합니다. 사용자가 여러 게시물을 작성할 수 있도록 합니다.

📍 Step 3: 게시판(Board) 모델 정의

class Board(db.Model):
    __tablename__ = "boards"

    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    content = db.Column(db.String(200))
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    author = db.relationship('User', back_populates='boards')
  • id: 게시물의 고유 식별자입니다.
  • title, content: 게시물의 제목과 내용을 저장합니다.
  • user_id: 사용자(User) 테이블과 연결된 외래 키로, 게시물을 작성한 사용자를 식별합니다.
  • author: User 모델과의 관계를 설정하여 게시물 작성자의 정보를 참조할 수 있게 합니다.

📍 Step 4: 주석 처리된 필드

# address = db.Column(db.String(120), unique=True, nullable=False)  # 추가된 필드
  • 필요할 때 활성화하여 사용자의 추가적인 정보를 저장할 수 있는 예시입니다.

✅ 마무리 요약 및 복습 포인트

  • Flask-SQLAlchemy를 통해 명확하고 효율적인 데이터 모델을 구축할 수 있습니다.
  • 모델 간의 관계를 설정하여 데이터 관리를 효과적으로 합니다.
  • 필요에 따라 필드를 추가하거나 수정하여 확장성을 확보할 수 있습니다.

이 과정으로 데이터 모델 설계를 더욱 효과적으로 수행할 수 있습니다! 🚀

'Flask' 카테고리의 다른 글

Chapter 3-5 Flask-SQLAlchemy 게시판 관리 라우트 구축 (routes/board.py)  (0) 2025.04.21
Chapter 3-4 Flask-SQLAlchemy 사용자 관리 라우트 구축(routes/user.py)  (0) 2025.04.21
Chapter 3-2 Flask-SQLAlchemy 구축(app.py)  (0) 2025.04.21
Chapter 3-1 ORM이란? Flask-SQLAlchemy란?  (0) 2025.04.21
Chapter 2-7 Flask MySQL CRUD 애플리케이션 구현  (0) 2025.04.18
'Flask' 카테고리의 다른 글
  • Chapter 3-5 Flask-SQLAlchemy 게시판 관리 라우트 구축 (routes/board.py)
  • Chapter 3-4 Flask-SQLAlchemy 사용자 관리 라우트 구축(routes/user.py)
  • Chapter 3-2 Flask-SQLAlchemy 구축(app.py)
  • Chapter 3-1 ORM이란? Flask-SQLAlchemy란?
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (597) N
      • Python (32)
      • 프로젝트 (43)
      • 과제 (25)
      • Database (40)
      • 멘토링 (10)
      • 특강 (29)
      • 기술블로그 (32)
      • 기술블로그-Django편 (136) N
      • 기술블로그-Flask편 (35)
      • AI 분석 (4) N
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (61)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 3-3 Flask-SQLAlchemy 모델 구축(models.py)
상단으로

티스토리툴바