전체 글 2

[FastAPI] 별칭(Alias) 사용 시 매개변수를 불러오지 못하는 문제

개요필자는 주로 FastAPI를 사용해서 백엔드 개발을 한다. FastAPI의 자유로움과 성능에 반해 FastAPI를 주로 사용하고 있지만 아직 1.x.x 번대 버전이 출시되지도 않은 만큼 자잘한 버그들이 있는 편이다. 해당 포스트에서는 FastAPI의 버그 중 하나인 매개변수에 별칭(alias) 사용 시 실제 요청에는 해당 매개변수를 포함했음에도 불구하고 매개변수를 찾을 수 없다는 오류를 반환하는 문제에 대해 설명하고자 한다. 버전FastAPI: 0.115.14Pydantic: 2.11.7본론FastAPI는 Pydantic을 기반으로 타입 체크와 타입 힌트를 제공한다. 따라서, 요청에 Pydantic의 BaseModel를 상속받는 클래스를 사용해서 매개변수를 관리(타입 체킹, 포함 여부 등) 할 수 있..

Language/Python 2025.06.29

[SQLAlchemy] 동시성 제어 (Optimistic Lock / Pessimistic Lock)

개요웹 개발을 할 때에는 동시성(concurrency)을 신경써야 한다. 예를 들면 간단히 게시글에 좋아요를 누를 수 있는 서비스가 있다고 할 때,사용자 두 명이 "동시에" 좋아요 버튼을 눌렀을 경우 동시성을 무시할 경우 한 사용자의 좋아요만 올라갈 가능성이 발생한다. 이를 경쟁 상태(Race Condition)라고 한다. 이러한 동시성 문제가 발생하지 않도록 하기 위해 데이터베이스의 "락" 등의 방안이 존재한다. 동시성을 무시한 경우, 비관적 락을 사용한 경우, 낙관적 락을 사용한 경우로 나누어 각각 동시에 요청이 들어올 경우 어떤 현상이 발생하는지 정리하고자 한다. 우선 데이터베이스 테이블과 Entity를 만들고 SQLAlchemy의 명시적 매핑(imperatively mapping)을 이용해 Ent..

Language/Python 2025.06.28