728x90
DELETE을 통해서 DB의 데이터를 삭제해보는 것이 목표
1. 데이터를 업데이트하기 위한 DELETE 함수 생성
#return값이 없을 때
@app.delete("/{todo_id}")
async def delete_todo(todo_id: int, db: Session = Depends(get_db)):
todo_model = db.query(models.Todos).filter(models.Todos.id == todo_id).first()
if todo_model is None:
raise http_exception()
db.query(models.Todos).filter(models.Todos.id == todo_id).delete()
#db.flush()
db.commit()
successful_response(200)
////////////////////////////
#return값이 있을 때
@app.delete("/{todo_id}")
async def delete_todo(todo_id: int, db: Session = Depends(get_db)):
todo_model = db.query(models.Todos).filter(models.Todos.id == todo_id).first()
if todo_model is None:
raise http_exception()
db.query(models.Todos).filter(models.Todos.id == todo_id).delete()
#db.flush()
db.commit()
return successful_response(200)
※ 코드 해석
- 매개변수로 Todo의 BaseModel을 받고, get_db 함수를 통해 db랑 연결한다.
- DB에 만든 Table 모델을 가져와서 todo_model에 담는다.
- 찾는 todo_id 값이 없으면 http_exception() 함수를 실행(함수는 38페이지 참조)
- todo_id 값으로 데이터를 찾아서 delete 매서드로 테이블의 데이터를 삭제한다.
- commit()은 해당 내용을 DB에 적용한다라는 뜻.
- 번외로 flush()는 DB에 적용하기 전 중간 단계라고 보면 된다.(DB에 적용 x)
2. 추가적인 함수추가
def successful_response(status_code:int):
return {
'status': status_code,
'transaction': 'Successful'
}
※ 앞서 소개한 Request 요청에는 status를 직접 적어줬지만 계속 반복해서 사용이 됨으로 함수화를 시켜서 API에 적용
3. Swagger 확인(Delete API에 return값을 지정하지 않았을 때)
※ GET요청했을 때 테이블의 데이터들의 id를 볼 수 있다.
※ 2번 id에 해당하는 값을 request 했을 때 Code 200을 볼 수 있다.
※ Response body가 null인 이유는 위 함수에서 return값에 아무것도 지정하지 않았기 때문
※ 하지만 GET요청했을 다시 했을 때 데이터가 삭제 된 것을 볼 수 있다.
4. Swagger 확인(Delete API에 return값을 지정했을 때)
※ POST 요청으로 새로운 데이터를 삽입시킨다.
※ GET요청했을 때 테이블에 저장된 데이터의 id를 볼 수 있다.
※ id 5의 값을 delete 요청했을 때 return 값이 있는 경우 body의 값이 보이는 것을 확인할 수 있다.
※ GET요청했을 다시 했을 때 데이터가 삭제된 것을 볼 수 있다.
728x90
SMALL
'Develop > FastAPI' 카테고리의 다른 글
FastAPI Create Users Table / Create Foreign Key - 43 (0) | 2023.01.07 |
---|---|
FastAPI Database Relationship / Foreign Key / Query- 42 (0) | 2023.01.07 |
FastAPI Put Request를 통한 DB 업데이트 - 40 (0) | 2023.01.04 |
FastAPI Post Request를 통한 DB 저장 - 39 (0) | 2023.01.04 |
FastAPI sqlalchemy filter 사용하기(select) - 38 (0) | 2023.01.01 |