나는 이렇게 학습한다 575

FastAPI _ Custom Exception 만드는 방법

코드를 작성하다 보면 특정 상황에 대한 예외처리를 만들고 싶을 때가 있다. FastAPI는 일반적으로 HTTPException을 이용해 예외를 처리하는데, 유사한 예외를 반복적으로 처리해야 한다면 우리가 직접 Exception을 커스텀해서 사용할 수 있다. 이번 글에서는 FastAPI에서 Custom Exception을 어떻게 구현하는지 코드로 설명해보겠다. 구현 시작 먼저 아주 간단한 api를 작성해보았다. from fastapi import FastAPI app = FastAPI() @app.get("/{name}") def home(name:str): return {"detail": f"Hello, {name}"} name을 쿼리 스트링으로 넘겨주면 "Hello, {name}"으로 반환해주는 api..

VSCode _ 디버깅하는 방법 (feat. Python - FastAPI)

print로 디버깅? 서버 런타임 중에 버그가 발생했다고 가정해보자. 내가 원하는 값을 반환해주어야 하는데 엉뚱한 값이 나온다. 버그를 찾아 고치기 위해 작성된 코드를 보지만 어디서부터 잘못된 건지 모르겠다. 그럴 때 흔히 하는 방법이 print()로 코드 중간중간을 출력하는 것이다. 의심스러운 지점에 print를 배치하고 내가 생각한 대로 작동하는지 출력해본다. 하지만 이 방법은 리소스가 많이 든다. 개발자가 직접 코드를 작성해야하고 상태나 변수명을 직접 호출해야 한다. 설령 버그를 발견하고 고치더라도 print 지우는 것을 까먹어 불필요한 코드까지 커밋해버리기도 한다...ㅜㅜ 다행히도 VSCode는 우리가 손쉽게 디버깅 할 수 있도록 도와준다. 이번 글에서는 Python - FastAPI 서버를 기준..

SQLAlchemy _ add() 와 add_all() 사용법과 차이점

add()와 add_all() add()와 add_all() 은 sqlalchemy session의 메서드로서 DB에 데이터를 넣을 때 사용합니다. 메서드의 이름에서 보면 알다시피 add는 단일 insert이고 add_all 은 bulk insert입니다. 오늘은 이 둘의 사용법에 대해서 알아보겠습니다. add() 여기 3개의 이름을 DB에 넣어야 한다고 해봅시다. 3개의 데이터는 각각 첫 번째 요소가 id, 두 번째 요소가 이름입니다. names = [ [1, "변덕순"], [2, "장득현"], [3, "고문용"], ] 이를 add()로 넣는다면 다음과 같은 코드를 작성할 수 있습니다. ('Name'은 model class입니다) names = [ [1, "변덕순"], [2, "장득현"], [3, "고..

SQLAlchemy _ NotSupportedError(InvalidCachedStatementError) 에러 해결

AsyncSessionNotSupportedError, InvalidCachedStatementError 테스트 코드를 작성하는 중에 에러가 발생했다!! 에러 메시지는 다음과 같다. """ sqlalchemy.exc.NotSupportedError: (sqlalchemy.dialects.postgresql.asyncpg.InvalidCachedStatementError) : cached statement plan is invalid due to a database schema or configuration change (SQLAlchemy asyncpg dialect will now invalidate all \\ prepared caches in response to this exception) E [..