2012-07-15 5 views
1

나는 File 클래스가 있습니다. 사용자가 파일을 첨부하지 않은 경우 SQLAlchemy의 일대일 관계는

class Note(DeclarativeBase): 
    __tablename__ = 'notes' 

    id = Column(Integer, primary_key=True) 
    note = Column(String) 
    fid = Column(Integer, ForeignKey('files.id')) 

    file = relationship('File', uselist=False, cascade="all, delete-orphan") 

fid NULL 수 있습니다 : 나는 또한 Note 클래스가 있습니다. Note 외에도 다른 클래스는 첨부 파일 처리를 위해 fid 열을 사용합니다.

그러나 필자는 메모 작성을 어떻게보다 훌륭하게 만들 수 있는지 궁금합니다. 특히, 나는 Note(note=note_text,file=File(...))과 같은 것을 할 수 있고, SQLAlchemy가 files에 새로운 엔트리를 삽입하도록 돌보고 싶습니다. 마찬가지로 기존 Note의 경우 n.file = File(...) 또는 n.file = None을 수행하고 files에 고아 항목이없는 모든 작업을 수행하고 싶습니다.

답변

1

SQLAlchemy는 모든 NoteFile 개체를 데이터베이스 세션에 유지하고 Session.flush 동안 외래 키를 적절히 할당합니다. relationship을 올바르게 정의하는 것 외에 다른 작업은 필요하지 않습니다 (이미 알 수 있듯이 이미 완료했습니다).

+0

이 작업을 수행하려면'single_parent = True'를 추가해야하지만 그렇지 않은 경우에는 설명대로합니다. –