x

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

· 2024-06-11 (화) 17:26:53 · 501 · 1
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](https://github.com/gnuboard/g6/assets/114769749/46b69495-5bea-4186-9aeb-a83eb8b0712b)

|

댓글 1개

2024-06-14 (금) 18:21:36
그냥 지금상태에서는 생성자에 있는 세션메이커를 get 으로 옮기시면 될꺼예요
댓글을 작성하시려면 로그인이 필요합니다.

그누보드6 이슈

174건

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

+
제목 글쓴이 날짜 조회
sseiblog-nand...
24-06-24 조회 564
sseiblog-nand...
24-06-21 조회 639
sseiblog-nand...
24-06-21 조회 743
sseiblog-nand...
24-06-21 조회 580
24-06-20 조회 508
sseiblog-nand...
24-06-20 조회 611
sseiblog-nand...
24-06-19 조회 446
sseiblog-nand...
24-06-18 조회 654
sseiblog-nand...
24-06-13 조회 456
24-06-13 조회 476
24-06-13 조회 408
sseiblog-nand...
24-06-12 조회 457
sseiblog-nand...
24-06-12 조회 429
sseiblog-nand...
24-06-12 조회 477
24-06-11 조회 502
sseiblog-nand...
24-06-10 조회 437
24-06-09 조회 671
sseiblog-nand...
24-06-07 조회 486
sseiblog-nand...
24-06-05 조회 485
sseiblog-nand...
24-06-05 조회 502