이전 내용
[파이썬] FastAPI - 메모 앱 프로젝트 1: 초기 설정, DB 연동
이전 내용 [파이썬] FastAPI - 성능 개선 팁이전 내용 [FastAPI] 미들웨어(middleware) - 3: GZip이전 내용 [FastAPI] 미들웨어(middleware) - 2: CORS이전 내용 [FastAPI] 미들웨어(middleware) - 1: TrustedHostMiddleware이전 내
puppy-foot-it.tistory.com
CRUD 기능 구현
main.py에 CRUD 기능을 구현하여 사용자가 메모를 생성, 조회, 수정 및 삭제가 가능하도록 구현한다.
from typing import Optional
Optional 은 Python의 타입 힌팅 기능 중 하나로, 특정 변수 또는 매개변수가 None 이 될 수 있음을 나타낸다.
class MemoUpdate(BaseModel):
title: Optional[str] = None
content: Optional[str] = None
- Optional[str]: 문자열(str) 타입의 값을 가질 수 있으며, 값이 없을 경우 None이 될 수 있다.
- MemoUpdate(BaseModel) 클래스는 BaseModel을 상속받아 수정할 수 있는 메모를 정의하며, 이 클래스 내의 두 필드인 title과 content 는 모두 선택적이다.
◆ 메모 생성 기능(Create)
@app.post("/memos")
async def create_user(memo: MemoCreate, db:Session = Depends(get_db)):
new_memo = Memo(title = memo.title, content = memo.content)
db.add(new_memo)
db.commit()
db.refresh(new_memo)
# 새로 생성된 사용자 정보 반환
return {"id": new_memo.id, "title": new_memo.title, "content": new_memo.content}
◆ 메모 조회 기능(Read)
# 메모 조회
@app.get("/memos")
async def list_memos(db: Session = Depends(get_db)):
memos = db.query(Memo).all()
# 리스트 내포 사용하여 전체 정보 반환
return [{'id': memo.id, 'title': memo.title, 'content': memo.content} for memo in memos]
◆ 메모 수정 기능(Update)
# 메모 수정
@app.put("/memos/{memo_id}")
async def update_user(memo_id: int, memo: MemoUpdate, db: Session = Depends(get_db)):
db_memo = db.query(memo).filter(Memo.id == memo_id).first()
if db_memo is None:
return {"error": "User를 찾을 수 없습니다."}
# 사용자 정보 업데이트
if memo.title is not None:
db_memo.title = memo.title
if memo.content is not None:
db_memo.content = memo.content
db.commit()
db.refresh(db_memo)
return {"id": db_memo.id, "title": db_memo.title, "content": db_memo.content}
◆ 메모 삭제 기능(Delete)
# 메모 삭제
@app.delete("/memos/{memo_id}")
async def delete_user(memo_id: int, db: Session = Depends(get_db)):
db_memo = db.query(Memo).filter(Memo.id == memo_id).first()
if db_memo is None:
return {"error": "Memo를 찾을 수 없습니다."}
db.delete(db_memo)
db.commit()
return {"message": "Memo가 삭제되었습니다."}
앞서 작성한 CRUD 기능을 구현하는 코드에 대한 설명은 하단 링크에서 보다 자세하게 확인할 수 있다.
[파이썬] FastAPI - SQLAlchemy와 CRUD (Depends, db.query)
이전 내용 [파이썬] FastAPI - ORM 연동하기(SQLAlchemy)이전 내용 [파이썬] FastAPI - 웹소켓이전 내용 [파이썬] FastAPI - 스트리밍 응답이전 내용 [파이썬] FastAPI - 쿼리 매개변수, 경로 매개변수, 백그라운
puppy-foot-it.tistory.com
CRUD 기능 테스트하기
먼저 main.py를 실행하여 서버를 실행한 뒤, POST MAN을 켜서 CRUD 기능을 테스트해 보도록 한다.
◆ 루트('/') 페이지에서 GET 요청
localhost:8000/ URL에서 GET 요청을 하면 home.html 이 잘 뜨는 것을 확인할 수 있다.

◆ 메모 생성
엔드포인트를 /memos 로 설정하고, Body에서 JSON 형태로 값을 입력한 뒤 POST 요청을 하면 메모가 잘 생성된 것을 확인해 볼 수 있다.

◆ 메모 조회
엔드포인트를 /memos 로 설정하고, GET 요청을 보내면 작성한 메모들이 조회되는 것을 확인할 수 있다.

◆ 메모 수정
id가 3인 메모를 영어로 바꿔보기 위해 엔드포인트 /memos/3 에서 JSON 타입으로 수정 항목(title, content)을 입력하고 PUT 요청을 하면 수정이 잘 된 것을 확인할 수 있다.

◆ 메모 삭제
2번 메모를 삭제하기 위해 엔드포인트 /memos/2 에서 DELETE 요청을 보내면 삭제 되었다는 메시지가 반환된다.

최종적으로, 앞서 진행한 수정 및 삭제 기능이 잘 구현되었는지 전체 메모를 조회해 본다.

CRUD 기능이 잘 구현된 것을 확인할 수 있다.
SQL Shell 에서도 테이블에 해당 데이터가 잘 생성되었는지 확인해 본다.
SELECT * FROM memo;

잘 생성된 것을 확인할 수 있다.
[참고]
가장 빠른 풀스택을 위한 플라스크 & FastAPI
다음 내용
[파이썬] FastAPI - 메모 앱 프로젝트 3: 사용자 인증
이전 내용 [파이썬] FastAPI - 메모 앱 프로젝트 2: CRUD 구현이전 내용 [파이썬] FastAPI - 메모 앱 프로젝트 1: 초기 설정, DB 연동이전 내용 [파이썬] FastAPI - 성능 개선 팁이전 내용 [FastAPI] 미들웨어(middl
puppy-foot-it.tistory.com
'[파이썬 Projects] > <파이썬 웹개발>' 카테고리의 다른 글
[파이썬] FastAPI - 메모 앱 프로젝트 4: 사용자별 메모 관리(feat. Almebic) (0) | 2025.05.09 |
---|---|
[파이썬] FastAPI - 메모 앱 프로젝트 3: 사용자 인증 (0) | 2025.05.09 |
[파이썬] FastAPI - 메모 앱 프로젝트 1: 초기 설정, DB 연동 (0) | 2025.05.09 |
[파이썬] FastAPI - 성능 개선 팁 (0) | 2025.05.08 |
[파이썬] FastAPI - 미들웨어(middleware) - 3: GZip (0) | 2025.05.08 |