2010-03-12 5 views
1

분명히 SQLAlchemy에 문제가 있습니다. 내 코드의 개략적 스케치 :SQLAlchemy 자동 연결?

나는 두 번째 주장을 항상 실패한다! 즉, 코드가 트랜잭션 내에 있더라도 데이터가 데이터베이스에 삽입되는 것 같습니다. 이 평가가 정확합니까?

답변

1

변경 사항이 이 (가)을 DB에 위탁하지 않는다고 맞습니다. 그러나 그들은 자동 - 플러시 SQLAlchemy하여 쿼리를 수행 할 때, 귀하의 경우 플러시 어설 션을 가진 행에 수행됩니다. 따라서 commit을 명시 적으로 호출하지 않으면 실제 데이터 내에서 DB에서 이러한 변경 사항을 볼 수 없습니다. 그러나 동일한 conn 개체를 사용하는 한 다시 가져올 수 있습니다.

autoflush=False을 세션 생성자에 전달하면이 동작을 비활성화 할 수 있습니다.