2017-03-02 1 views
3

나는 다음과 같습니다 SQLAlchemy의 원형 일대일 관계 (확실하지 올바른 용어가 무엇인지) 만들려고 노력하고 있어요 :SQLAlchemy의 원형 일대일 관계

class Parent(Base): 
    __tablename__ = 'parents' 
    id = db.Column(Integer, primary_key=True) 
    child_id = db.Column(db.Integer,db.ForeignKey("children.id", use_alter=True)) 
    child = db.relationship("Child", 
         uselist=False, 
         foreign_keys=[child_id], 
         post_update=True) 

class Child(Base): 
    __tablename__ = 'children' 
    id = db.Column(db.Integer, primary_key=True) 
    parent_id = db.Column(db.Integer, db.ForeignKey("parents.id")) 
    user = db.relationship("Parent", 
         uselist=False, 
         foreign_keys=[parent_id]) 

모두는 작동을 내가 db.drop_all()을 시도 할 때까지 예상했는데 sqlalchemy.sql.schema.ForeignKeyConstraintnameNone 인 오류가 발생합니다. 이 순환 일대일 관계를 만들려고 할 때 나는 잘못된 것을하고 있습니까? 난 정말 하나의 열을 쿼리하여 다른 하나의 ID를 얻을 수 있기를 원합니다. 그러므로 순환 참조입니다. SQLAlchemy Docs에서

+1

복수 테이블 이름 하루 종일 Parent.child 또는 수 있습니다 불법해야한다 : D –

+0

당신이 노력이'아이 = db.relationship ("Child", cascade = "all, delete")'? –

+0

게시물에 전체 추적을 추가하십시오. – RazerM

답변

3

:

class Parent(Base): 
    __tablename__ = 'parent' 
    id = Column(Integer, primary_key=True) 
    child = relationship("Child", uselist=False, back_populates="parent") 

class Child(Base): 
    __tablename__ = 'child' 
    id = Column(Integer, primary_key=True) 
    parent_id = Column(Integer, ForeignKey('parent.id')) 
    parent = relationship("Parent", back_populates="child") 

그런 다음 Child.parent에게