SQLAlchemy + Flask:通过一组表的多对多自引用关系

时间:2015-04-02 21:14:45

标签: python flask sqlalchemy

我必须从一个奇怪的数据库中提取一些信息,为此,我需要一个自引用的多对多关系。表格关系如下:

class A(db.Model):
    __tablename__ = 'A'

    a_id = db.Column(db.Integer, primary_key=True)

class B(db.Model):
    __tablename__ = 'B'

    a_id = db.Column(db.Integer, db.ForeignKey(A.a_id), primary_key=True)
    c_id = db.Column(db.Integer, db.ForeignKey(C.c_id), primary_key=True)

class C(db.Model):
    __tablename__ = 'C'

    c_id = db.Column(db.Integer, primary_key=True)

class D(db.Model):
    __tablename__ = 'D'

    a_id = db.Column(db.Integer, db.ForeignKey(A.a_id), primary_key=True)
    c_id = db.Column(db.Integer, db.ForeignKey(C.c_id), primary_key=True)

所以,A有另一个A到B,通过C和D.我试着解决这个问题:

class A(db.Model):
    __tablename__ = 'A'

    a_id = db.Column(db.Integer, primary_key=True)
    another_a = db.relationship('A', secondary='join(B, D, D.c_id == B.c_id).join(A, D.a_id == A.a_id)')

结果我收到以下错误:

  

AmbiguousForeignKeysError:无法确定之间的连接条件   关系Build.promoted_build上的父/子表 - 有   通过辅助表'“B”链接表的多个外键路径   JOIN“C”ON“B”.c_id =“D”.c_id JOIN“A”ON“D”.a_id =“A”.a_id'。   指定'foreign_keys'参数,提供这些列的列表   应该将其视为包含来自的外键引用   每个父表和子表的辅助表。

有人可以帮助我吗?

0 个答案:

没有答案