인프런 커뮤니티 질문&답변

inflearn1.modeep님의 프로필 이미지

작성한 질문수

실전! FastAPI 입문

(실습) ORM 적용 - GET 단일 조회 API

pydantic.error_wrappers.ValidationError 오류가 떠요

해결된 질문

작성

·

1.2K

0

지금 orm적용 get단일 조회 api 강의를 보고있는데 코드를 똑같이 쳤는데 마지막에 swagger 에서 입력 하면 pydantic.error_wrappers.ValidationError: 3 validation errors for ToDoSchema

id

field required (type=value_error.missing)

content

field required (type=value_error.missing)

is_done

field required (type=value_error.missing)

이 오류가 뜹니다..ㅠㅠ 무슨 오류인가요

답변 1

1

신동현님의 프로필 이미지
신동현
지식공유자

안녕하세요! ToDoSchema에 필수값이 전달되지 않았기 때문에 발생하는 에러로 확인됩니다. 핸들러에서 리턴하는 코드에 ToDoSchema.from_orm(todo) 부분이 잘 적용되어 있나 확인 부탁드립니다.

@app.get("/todos/{todo_id}", status_code=200)
def get_todo_hendler(
todo_id: int,
session: Session = Depends(get_db),
) -> ToDoSchema:
todo: ToDo | None = get_todo_by_todo_id(session=session, todo_id = todo_id)
if todo:
return ToDoSchema.from_orm(todo)
raise HTTPException(status_code=404, detail="찾을 수 없습니다.") 제 코드는 이렇습니다.

신동현님의 프로필 이미지
신동현
지식공유자

get_todo_by_todo_id 함수 코드는 어떻게 작성하셨나요?

def get_todo_by_todo_id(session:Session, todo_id: int) -> ToDo | None:
return session.scalars(select(ToDo).where(ToDo.id == todo_id))
이렇게 작성했습니다

 

 

신동현님의 프로필 이미지
신동현
지식공유자

scalars -> scalar로 변경 부탁드립니다!

신동현님의 프로필 이미지
신동현
지식공유자

scalars()는 조건문에 해당하는 데이터를 조회해서 ScalarResult를 반환합니다. scalar()는 반환된 ScalarResult에 데이터가 있는 경우 하나의 python 객체를 반환하고 데이터가 없는 경우 None을 반환하는 메소드입니다.