💡 FastAPI에서 PostgreSQL까지 흐름 이해하기
FastAPI로 백엔드 API를 만들다 보면 다음과 같은 단어들을 자주 마주하게 됩니다.
각자 따로 설명을 찾아보면 이해가 가면서도 개발하다보면 이게 뭐엿지 하게되는 상황이 꼭 있기 마련이다!!
그래서 공부한김에 이해하기쉽게 정리해서 포스팅해봤다.
처음엔 각각이 따로 노는 것처럼 보이지만, 알고 보면 이들은 하나의 흐름으로 연결됩니다.
- Pydantic
- SQLAlchemy
- psycopg2
- PostgreSQL
- 스키마(schema)
🧭 전체 흐름 요약
FastAPI (Pydantic 스키마)
↓
SQLAlchemy (ORM)
↓
psycopg2 (드라이버)
↓
PostgreSQL (데이터베이스)
🧱 각 구성요소 역할
| 구성요소 | 설명 |
| FastAPI | 요청/응답 처리, API 라우팅 담당 |
| Pydantic | 클라이언트 → 서버 요청 데이터의 유효성 검사 및 구조 정의 (Schema) |
| SQLAlchemy | ORM: 파이썬 클래스 ↔ DB 테이블 간 매핑 처리 |
| psycopg2 | PostgreSQL과 실제 연결하는 드라이버 (SQLAlchemy 내부에서 사용됨) |
| PostgreSQL | 실제 데이터를 저장하는 관계형 데이터베이스 |
🧠 백엔드 핵심 요소 역할 정리 (비유 버전)
• FastAPI: “요청 받았어요! 처리할 준비됐어요~”
• Pydantic: “입력값 확인 완료! 유효한 데이터입니다!”
• SQLAlchemy: “모델과 DB 간 연결은 제가 처리할게요~”
• psycopg2: “그럼 이 데이터, DB한테 직접 전달하겠습니다!”
• PostgreSQL: “네~ 저장 완료했어요!”
🗣 개념을 역할극으로 설명하면?
• FastAPI: “💬 사용자 요청 받아서 처리할게요~ API는 제 담당이죠!”
• Pydantic: “🔍 들어온 데이터 검사할게요! 빠진 값은 없나요?”
• SQLAlchemy: “📦 이건 모델이랑 테이블 연결해주는 ORM이에요. 편하게 객체처럼 쓰세요!”
• psycopg2: “📬 알겠어요! SQL 쿼리 대신 제가 직접 DB에 말 걸고 올게요~”
• PostgreSQL: “📚 오케이! 데이터는 여기 잘 저장해둘게요.”
🧩 예시로 보는 흐름
- 클라이언트가 JSON으로 데이터를 보냄
- { "title": "새로운 일정", "start_date": "2025-04-01", "end_date": "2025-04-03" }
- Pydantic이 해당 요청이 스키마와 맞는지 검사
- SQLAlchemy 모델을 통해 Python 객체를 DB 객체로 변환
- psycopg2가 PostgreSQL에 SQL 쿼리를 날림
- PostgreSQL이 데이터를 저장함
🎯 간단한 기억 팁
- Pydantic: 데이터 검사기 (문지기)
- SQLAlchemy: 통역사 (ORM 매핑)
- psycopg2: 배달부 (SQL 실행)
- PostgreSQL: 창고 (데이터 저장)
✏️ 마무리하며
FastAPI를 쓰다 보면 처음엔 이 개념들이 각각 따로 노는 것처럼 느껴지죠.
하지만 흐름을 한번 잡고 나면,
이 모든 요소들이 어떻게 연결되는지 훨씬 쉽게 이해할 수 있습니다.
이번 글이 그 흐름을 잡는 데 조금이라도 도움이 되었으면 좋겠어요.
이제 실제로 코드를 짜보면서 직접 익혀보면 훨씬 자연스럽게 손에 익을 거예요.
'Dev > Python' 카테고리의 다른 글
| [Python] db.flush() Service/CRUD 계층 분리 구조에서의 실전 예제 (0) | 2025.04.11 |
|---|---|
| 튜플 (Tuple) - 여러 값을 묶는 간단하고 효율적인 방법 (2) | 2025.04.10 |
| [FastAPI] dict vs Pydantic 스키마 사용 비교 (0) | 2025.04.07 |
| [FastAPI] 카테고리 중복 체크 시 null / 빈 문자열 처리 방법 (0) | 2025.04.05 |
| [Python] 프로젝트에서 린트 & 포맷터 도입하는 이유와 셋업 방법 (flake8, black, isort, mypy, pre-commit) (0) | 2025.04.03 |