PostgreSQL DB 설계 기초와 파이썬(FastAPI) ORM 연동
데이터베이스 스펙트럼 중에서 최근 전 세계적으로 가장 사랑받는 RDBMS는 단연 PostgreSQL입니다. 풍부한 데이터 타입 지원과 강력한 성능을 자랑하는 PostgreSQL을 활용해 유저와 프로젝트 테이블을 설계하고, 파이썬에서 이를 조작하는 ORM(Object Relational Mapping) 연동법을 알아봅니다.
1. ORM(Object Relational Mapping)이란?
과거에는 백엔드 코드 안에 복잡한 SQL 쿼리문(SELECT * FROM users...)을 직접 텍스트로 적어야 했습니다. 하지만 ORM을 사용하면 파이썬의 '객체(Class)'를 마치 DB의 '테이블'처럼 다룰 수 있습니다. 파이썬 문법만으로 DB를 제어할 수 있어 생산성이 압도적으로 높아집니다.
2. SQLAlchemy를 활용한 모델 설계 (1:N 관계)
파이썬의 대표적인 ORM인 SQLAlchemy를 사용하여 '리더(User)'와 '프로젝트(Project)' 테이블을 설계해 봅시다. 한 명의 유저가 여러 프로젝트를 생성할 수 있으므로 일대다(1:N) 관계가 성립합니다.
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship
from database import Base
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary 사=True, index=True)
username = Column(String, unique=True, index=True)
email = Column(String, unique=True)
# 1:N 관계 설정 (유저가 만든 프로젝트들)
projects = relationship("Project", back_populates="owner")
class Project(Base):
__tablename__ = "projects"
id = Column(Integer, primary_key=True, index=True)
title = Column(String, index=True)
description = Column(String)
# 외래키(Foreign Key)로 User 테이블 참조
owner_id = Column(Integer, ForeignKey("users.id"))
# 역참조 설정
owner = relationship("User", back_populates="projects")
3. 데이터베이스 마이그레이션 (Alembic)
이렇게 코드로 작성한 모델을 실제 PostgreSQL 데이터베이스 테이블로 찍어내려면 '마이그레이션(Migration)' 도구가 필요합니다. 파이썬 생태계에서는 Alembic을 사용하여 모델의 변경 사항을 추적하고 데이터베이스 스키마를 안전하게 업데이트합니다.
4. 마무리
테이블 관계(1:1, 1:N, N:M)를 명확하게 정의하고 외래키(Foreign Key)를 잘 다루는 것은 백엔드 시스템 설계의 기초입니다. ORM을 활용해 안전하고 깔끔한 데이터 파이프라인을 구축해 보세요.
'인공지능(AI)' 카테고리의 다른 글
| 백엔드 서버 배포 가이드: AWS EC2와 무중단 운영 기초 (1) | 2026.03.05 |
|---|---|
| AWS S3를 활용한 파이썬(FastAPI) 이미지 업로드 API 구현 (0) | 2026.03.05 |
| RDBMS vs NoSQL: 내 프로젝트에 맞는 데이터베이스 선택 기준 (0) | 2026.03.04 |
| 프론트엔드와 백엔드의 통신 완벽 이해하기 (REST API & CORS) (0) | 2026.03.02 |
| 사이드 프로젝트 팀 매칭 플랫폼 기획 및 백엔드 아키텍처 설계 (0) | 2026.03.02 |