[python] FastAPI ORM과 관계형 데이터베이스의 관계 설정

FastAPI는 데이터베이스 관리를 위한 강력한 ORM(Object-Relational Mapping) 시스템을 제공합니다. 이번 블로그에서는 FastAPI ORM을 사용하여 관계형 데이터베이스의 관계를 어떻게 설정하는지 알아보겠습니다.

1. ORM이란?

ORM은 관계형 데이터베이스와 객체 지향 프로그래밍 언어 간의 데이터 변환을 자동으로 처리해주는 도구입니다. FastAPI ORM은 Pydantic 모델과 데이터베이스 테이블 간의 매핑을 단순화하며, 데이터베이스 쿼리를 쉽게 작성할 수 있도록 도와줍니다.

2. 관계 설정하기

from sqlalchemy import Boolean, Column, ForeignKey, Integer, String
from sqlalchemy.orm import relationship

class User(Base):
    __tablename__ = "users"

    id = Column(Integer, primary_key=True, index=True)
    username = Column(String, index=True)
    email = Column(String, unique=True, index=True)
    is_active = Column(Boolean, default=True)
    items = relationship("Item", back_populates="owner")

class Item(Base):
    __tablename__ = "items"

    id = Column(Integer, primary_key=True, index=True)
    title = Column(String, index=True)
    description = Column(String, index=True)
    owner_id = Column(Integer, ForeignKey("users.id"))
    owner = relationship("User", back_populates="items")

위의 코드에서 UserItem 클래스는 서로에 대한 참조를 갖고 있습니다. relationship 함수를 사용하여 두 테이블의 관계를 설정하였고, back_populates를 이용하여 양방향 관계를 구성하였습니다.

3. 관계형 데이터베이스에 데이터 추가하기

user = User(username="test", email="test@example.com")
db.add(user)
db.commit()
db.refresh(user)

item = Item(title="test", description="example", owner_id=user.id)
db.add(item)
db.commit()
db.refresh(item)

새로운 사용자와 아이템을 추가할 때, 객체 간의 관계 설정을 통해 데이터를 쉽게 관리할 수 있습니다.

4. 결론

FastAPI ORM을 사용하여 관계형 데이터베이스의 관계 설정은 매우 간단하고 직관적입니다. ORM을 통해 복잡한 데이터베이스 구조도 객체 간의 관계로 쉽게 표현할 수 있으며, 애플리케이션의 유지보수성과 확장성을 높일 수 있습니다.

더 자세한 내용은 FastAPI 공식 문서를 참고하시기 바랍니다.