이번엔 schemas.py 부분을 확인해보자
from pydantic import BaseModel
from datetime import datetime
from typing import List, Optional
class PatientBase(BaseModel):
name: str
brith_date: datetime
gender: str
contact: str
address: Optional[str] = None
class PatientCreate(PatientBase):
pass
class PatientUpdate(BaseModel):
name: Optional[str] = None
birth_date: Optional[datetime] = None
gender: Optional[str] = None
contact: Optional[str] = None
address: Optional[str] = None
is_active: Optional[bool] = None
class Patient(PatientBase):
id: int
is_active: bool
created_at: datetime
updated_at: datetime
class Config:
orm_mode = True
환자에 관한 스키마 부분은 다음과 같다.
스키마 파트는 FastAPI에서의 데이터 모델의 구조를 정의하는 부분이다.
하나 하나 자세히 살펴보면
class PatientBase(BaseModel):
name: str
birth_date: datetime
gender: str
contact: str
address: Optional[str] = None
해당 클래스는 환자 정보의 기본 속성을 정의하는 클래스이다.
class PatientCreate(PatientBase):
pass
class PatientUpdate(BaseModel):
name: Optional[str] = None
birth_date: Optional[datetime] = None
gender: Optional[str] = None
contact: Optional[str] = None
address: Optional[str] = None
is_active: Optional[bool] = None
class Patient(PatientBase):
id: int
is_active: bool
created_at: datetime
updated_at: datetime
class Config:
orm_mode = True
일반적인 패턴은
1. Base모델 (공통필드)
2. Create 모델 (API에서 새 리소스 생성 시 사용)
3. Update모델 (부분 업데이트를 위한 모델)
4. 응답 모델 (데이터베이스에서 반환된 전체 객체)
로 구성되어있다.
[FastAPI] FastAPI 내부 코드 확인하기 (FastAPI 클래스 생성자 메소드 debug 인자) (0) | 2025.04.17 |
---|---|
[FastAPI] (STT 기능 API 만들기)음성인식 데이터 처리 (WAV to PCM) #1 (0) | 2025.04.16 |
[FastAPI] CRUD 구현 (models.py 중심) #4 (0) | 2025.04.11 |
[FastAPI] CRUD 구현 (database.py부분 중점) #2 (0) | 2025.04.09 |
[FastAPI] CRUD 구현 (Create 하는 법, routers/ 부분 중점) #1 (0) | 2025.04.09 |