반응형
connect database Instance xxx is not bound to a Session; attribute refresh operation cannot proceed (Background on this error 해결
이 에러는 세션 close() 와 관계가 있다.
코드를 살펴보면, session을 close() 한 이후에 Database에서 가져온 Object 를 활용하는 코드가 있을 것이다.
close()를 통해 세션을 닫게 되면, sqlalchemy 에서 관리하는 Object 도 함께 종료가 된다.
그런데 세션의 Object를 계속 사용하면 나타나는 오류이다.
예제로 살펴보면 다음과 같다.
db_session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=db_engine))
db_session.add(insert_data)
db_session.commit()
db_session.close()
return insert_data.id
위 코드를 보면 이미 close()를 통해 세션을 닫았는데, 이후에 db_data.id를 가져오는 것을 알 수 있다. 따라서 해당 코드는 정상적으로 사용이 불가능하다.
따라서 close() 이전에 data를 먼저 다른 변수로 옮겨 놓는 방식으로 진행하면 문제 없이 사용이 가능하다.
반응형
'Python' 카테고리의 다른 글
SQLalchemy - Query 결과 데이터 Dict로 변환하기 (0) | 2024.04.01 |
---|---|
xz-utils backdoor 백도어 경고/패치 필요, 칼리리눅스등 위험 (0) | 2024.03.31 |
VSCode - 쓸만한 무료 코파일럿(Copilot) (0) | 2024.03.26 |
VSCode - Python 자동 주석 생성 autoDocstring (0) | 2024.03.25 |
Python - Log Decorator 활용 (0) | 2024.03.25 |