728x90
SMALL
POST를 통해서 데이터베이스에 데이터를 저장해보는 것이 목표
1. DB에 만들 Table(32페이지 참고)의 유효성 검사를 하기 위한 BaseModel 생성
from pydantic import BaseModel, Field
from typing import Optional
class Todo(BaseModel):
title: str
description: Optional[str]
priority: int = Field(gt=0, lt=6, description="The priority must be between 1-5")
complete: bool
2. 데이터를 생성하기 위한 POST 함수 생성
@app.post("/")
async def create_todo(todo: Todo, db: Session = Depends(get_db)):
todo_model = models.Todos()
todo_model.title = todo.title
todo_model.description = todo.description
todo_model.priority = todo.priority
todo_model.complete = todo.complete
db.add(todo_model)
#db.flush()
db.commit()
return {
'status': 201,
'transaction' : 'Successful'
}
※ 코드 해석
- 매개변수로 Todo의 BaseModel을 받고, get_db 함수를 통해 db랑 연결한다.
- DB에 만든 Table 모델을 가져와서 todo_model에 담는다.
- Table 모델의 각각의 컬럼에 데이터를 담는다.
- sqlalchemy의 add 매서드를 통해 todo_model을 insert 해준다.
- add는 하나씩 데이터를 삽입 / add_all는 한 번에 데이터를 삽입
- commit()은 해당 내용을 DB에 적용한다라는 뜻.
- 번외로 flush()는 DB에 적용하기전 중간 단계라고 보면 된다.(DB에 적용 x)
- add -> flush -> commit or add -> commit
3. Swagger 확인
※ Swagger 해석
- 매개변수로 BaseModel을 지정한 형식에 맞게 POST값을 날린다.
- Code 200을 볼 수 있고 POST API에서 return값으로 넣어준 값들을 볼 수 있다.
※ GET요청했을 때 테이블에 저장된 데이터를 볼 수 있다.
728x90
SMALL
'Develop > FastAPI' 카테고리의 다른 글
FastAPI Delete Request를 통한 데이터 삭제 - 41 (0) | 2023.01.04 |
---|---|
FastAPI Put Request를 통한 DB 업데이트 - 40 (0) | 2023.01.04 |
FastAPI sqlalchemy filter 사용하기(select) - 38 (0) | 2023.01.01 |
FastAPI SessionLocal을 통한 테이블 읽기 - 37 (0) | 2022.12.31 |
FastAPI SQLite3 Setting Up Todos - 36 (0) | 2022.12.30 |