세션을 생성할 때 주요 인자는 다음과 같습니다.
• bind(엔진 객체): 세션이 연결할 데이터베이스 엔진 혹은 연결을 지정합니다. 세션이 어떤 DB에 쿼리를 실행할지 결정하는 핵심 인자입니다.
• expire_on_commit(bool): True일 경우 session.commit() 이후 세션에 적재된 ORM 객체의 모든 속성(모델 필드 값)이 만료되어 다음에 접근할 때 데이터베이스에서 다시 불러옵니다. 데이터베이스 상태와 객체 상태의 동기화를 보장하지만, 매번 재적재하므로 성능상 손해가 발생합니다. 기본값은 True입니다.
• autoflush(bool): True일 경우 쿼리를 실행하기 전(select() 등) 또는 트랜잭션 커밋 전 세션에 대기 중인 변경 사항(객체의 INSERT/UPDATE/DELETE)을 자동으로 데이터베이스로 내보내(flush) 데이터베이스 상태와 세션 상태를 동기화합니다. 기본값은 True이며, 버전2에서는 권장하지 않습니다. 명시적인 트랜잭션에서 벗어나기 때문인데 특히 버전 2에서 비동기로 동작하는 경우 비동기 맥락에서 벗어나서 오류가 발생하며, 이 오류는 문제 원인을 찾기 어렵게 하여 고생하는 원인이 됩니다.