본문 바로가기
Python

sqlalchemy - connect database Instance Database is not bound to a Session 해결하기

by 올엠 2024. 3. 30.
반응형

 

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를 먼저 다른 변수로 옮겨 놓는 방식으로 진행하면 문제 없이 사용이 가능하다.

반응형