2010-05-24 7 views
1

새 Foo 또는 새 Bar가 데이터베이스에 커밋 될 때마다 'Foo-created'이벤트 또는 'Bar-created'이벤트를 발생시키는 SessionExtension을 작성하고 싶습니다. 그러나 after_commit 메서드 내부에서 어떤 엔티티가 커밋되었는지 어디에서 찾을 수 있는지 알지 못합니다. 이 정보는 어디서 구할 수 있습니까?SQLAlchemy에서 후킹 엔티티 생성

답변

2

Session 인스턴스의 속성은 각각 new, dirty, deleted이고 추가, 업데이트 및 삭제 된 개체가 있습니다. after_commit이 실행될 때 이미 비어 있지만 after_flush에서 사용할 수 있습니다. after_flush 후크에서 각 플러시에 대해 추가 된 인스턴스 목록을 확장하여 이벤트에 사용하고 after_commit에 지울 수 있습니다.

+0

좋아, 그래서 나는 after_flush''에서'new'을 복사 한 다음 after_commit''에 그것을 사용할 수 있습니까? 충분히 간단하게 들립니다. 감사! – Derecho

+0

그래,하지만 내가 가진 문제는 새로 생성 된 인스턴스의 관계 속성이 설정되어 있지 않다는 점이다. 예를 들어,'author_id'는 정수이지만'author'는'None'입니다. 약간의 누출이 될 게으른 관계를 만드는 것보다 그것을 고칠 수있는 더 좋은 방법이 있을까요? – Derecho

+0

방금 ​​확인했는데 관계가 기본적으로 느슨하게로드되므로 무엇을해야할지 모르겠습니다. 이 메일 링리스트로 가야 할 수도 있습니다. – Derecho