Python
sqlalchemy - connect database Instance Database is not bound to a Session 해결하기
올엠
2024. 3. 30. 20:35
반응형
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를 먼저 다른 변수로 옮겨 놓는 방식으로 진행하면 문제 없이 사용이 가능하다.
반응형