📌 개념 정리
3-8. DB 객체 모델 정의 방법 2가지
📝 방법 1: db 객체와 모델 클래스를 같은 파일에 위치시키기
모델과 DB 객체 정의 (models.py)
from flask_sqlalchemy import SQLAlchemy
# SQLAlchemy 객체를 생성하여 데이터베이스와 상호작용할 준비를 합니다.
db = SQLAlchemy()
# User라는 모델 클래스를 정의하여 사용자의 데이터를 저장합니다.
class User(db.Model):
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)
# Board라는 모델 클래스를 정의하여 게시판 데이터를 저장합니다.
class Board(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False)
content = db.Column(db.Text, nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
- 같은 파일에서 모델과 DB 객체를 정의하면 관리가 편리하지만, 파일이 커질수록 관리가 어려워질 수 있습니다.
DB 객체 초기화 및 설정 (app.py)
from flask import Flask
from models import db, User, Board
# Flask 앱을 생성합니다.
app = Flask(__name__)
# 데이터베이스 설정을 Flask 앱에 추가합니다.
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# Flask 앱과 SQLAlchemy 객체를 연결하여 데이터베이스를 초기화합니다.
db.init_app(app)
# 앱이 실행될 때, 데이터베이스 테이블을 자동으로 생성합니다.
with app.app_context():
db.create_all()
- 앱과 데이터베이스 객체를 연결하고 설정하여 애플리케이션 실행 시 데이터베이스 테이블이 생성됩니다.
📝 방법 2: db 객체를 별도의 파일에 정의하고 임포트하기
DB 객체 정의 (db.py)
from flask_sqlalchemy import SQLAlchemy
# 중앙에서 관리할 SQLAlchemy 객체를 생성합니다.
db = SQLAlchemy()
- DB 객체를 별도의 파일에서 정의하여 모든 모델에서 공통으로 사용합니다.
모델 정의 (models.py)
from db import db
# 사용자 모델을 정의하여 데이터베이스에 사용자 정보를 저장합니다.
class User(db.Model):
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)
# 게시판 모델을 정의하여 데이터베이스에 게시글 정보를 저장합니다.
class Board(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False)
content = db.Column(db.Text, nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
- 모델 파일에서는 DB 객체를 임포트하여 각 모델 클래스를 정의합니다.
DB 객체 초기화 및 설정 (app.py)
from flask import Flask
from db import db
from models import User, Board
# Flask 앱을 생성합니다.
app = Flask(__name__)
# 데이터베이스 설정을 Flask 앱에 추가합니다.
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# Flask 앱과 중앙에서 관리하는 DB 객체를 연결하여 초기화합니다.
db.init_app(app)
# 앱 실행 시 데이터베이스 테이블을 자동으로 생성합니다.
with app.app_context():
db.create_all()
- DB 객체를 중앙에서 관리하기 때문에 모델과 앱 간의 결합도를 낮추어 유지보수가 편리합니다.
✅ 마무리 요약 및 복습 포인트
- 방법 1: 소규모 프로젝트에 적합하며 코드 관리가 간단합니다.
- 방법 2: 중대형 프로젝트에 적합하며 코드 유지보수 및 확장성이 뛰어납니다.
- 각 방법의 장단점을 이해하고 프로젝트 규모와 요구 사항에 따라 적절히 선택하여 효율적인 DB 관리 방식을 구축하세요!
'Flask' 카테고리의 다른 글
Chapter 3-10 Schema & Model 차이 (0) | 2025.04.21 |
---|---|
Chapter 3-9 Flask-SQLAlchemy CRUD 테스트 방법 (0) | 2025.04.21 |
Chapter 3-7 Flask-SQLAlchemy 게시판 관리 웹 페이지 구축(routes/board.py) (0) | 2025.04.21 |
Chapter 3-6 Flask-SQLAlchemy 게시판 관리 웹 페이지 구축(routes/board.py) (0) | 2025.04.21 |
Chapter 3-5 Flask-SQLAlchemy 게시판 관리 라우트 구축 (routes/board.py) (0) | 2025.04.21 |