내가 보려고 만든 블로그

<Python> pydantic 본문

Python | Web/Python

<Python> pydantic

정의김 2022. 10. 15. 10:55

pydantic은 type annotation 을 바탕으로 데이터를 검증해주고 어긋날 시 올바른 형태로 바꿔주는 역할을 해주는 라이브러리다. 

주로 사용처는 fastapi를 통해 웹개발을 할 때 request , response 등을 통해 데이터를 주고 받을 때 데이터들을 검증해줄때 사용한다.

다음 포스팅에 sql_alchemy 이용해서 DB연동하는 내용을 적을라고 했는데 한번에 같이 적는 것 보다는 나눠 적는게 나은 것 같아 적어봄!

 

fastapi에서 사용하는 예시를 가져왔다 (매우 간단하기 하지만) . 유저테이블에 다음과 같이 데이터를 넣어 줄 때 해당 컬럼의 자료형을 체크해주는 것. 이름에 이상한 숫자가 들어온다면 오류를 내뱉거나 자동으로 형변환이 가능하다. 

 

def add_user(user: schemas.User, db: Session) -> models.User: # schema.py의 User클래스를 이용
    row = models.User(
        id=user.id,
        username=user.username,
        
    )
    db.add(row)
    db.commit()
    return row
# schema.py
from pydantic import BaseModel

class User(BaseModel):
    id: int
    user_name : str

pydantic을 사용할 때 위와 같이 BaseModel 이라는 클래스를 상속받아서 만들어준 클래스에 데이터와 자료형을 적어주면 됨 . 

 

또한 선언한 자료형과 다른 데이터가 들어올 경우 자동으로 자료형을 옳바른 자료형으로 바꿔준다 . 

items라는 리스트에 string형의 잘못된 데이터가 들어올 경우 자동으로 int로 바꿔준 모습 .