We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
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)) 로 세션 객체의 아이디를 확인해보니 모두 동일합니다.
리퀘스트/작업변경/ 트렌젝션이 다르거나 새로 시작되면 세션을 새로 생성해야하며
트렌젝션, 작업단위 내에서는 세션 변수를 전달함으로서 동일 작업을 유지할 수있습니다.
The text was updated successfully, but these errors were encountered:
그냥 지금상태에서는 생성자에 있는 세션메이커를 get 으로 옮기시면 될꺼예요
Sorry, something went wrong.
No branches or pull requests
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)) 로 세션 객체의 아이디를 확인해보니 모두 동일합니다.
리퀘스트/작업변경/ 트렌젝션이 다르거나 새로 시작되면 세션을 새로 생성해야하며
트렌젝션, 작업단위 내에서는 세션 변수를 전달함으로서 동일 작업을 유지할 수있습니다.
The text was updated successfully, but these errors were encountered: