트랜젝션/리퀘스트 간 DB 세션 데이터 이슈 > 그누보드6 이슈

그누보드6 이슈

좋은 댓글과 좋아요는 제작자에게 큰힘이 됩니다.

트랜젝션/리퀘스트 간 DB 세션 데이터 이슈 정보

트랜젝션/리퀘스트 간 DB 세션 데이터 이슈

본문

SQLAlchemy 에서 세션은 작업단위입니다. (UoW 패턴)

세션객체는 실행하는 쿼리의 모델 객체를 가지고 다닙니다. 따라서 리퀘스트, 트렉젝션 단위 당 세션이 달라야합니다.

현재 구현에서는 세션 객체를 프로그램(서버)종료시까지 재활용하고 있어서 트렌젝션간 또는 서로 다른 리퀘스트 간에 모델 데이터가 간섭이 일어날 가능성이 있습니다.

https://docs.sqlalchemy.org/en/20/orm/session_basics.html#what-does-the-session-do

core/database.py

def sessionLocal(self) -> sessionmaker[Session]: print(id(self._sessionLocal))

print(id(self._sessionLocal)) 로 세션 객체의 아이디를 확인해보니 모두 동일합니다.

리퀘스트/작업변경/ 트렌젝션이 다르거나 새로 시작되면 세션을 새로 생성해야하며

트렌젝션, 작업단위 내에서는 세션 변수를 전달함으로서 동일 작업을 유지할 수있습니다.

image

추천
0

댓글 1개

90레벨 이상 댓글을 남길 수 있습니다.

전체 173
그누보드6 이슈 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT