AmbiguousForeignKeysError:无法确定之间的联接

时间:2019-05-21 15:36:27

标签: python orm sqlalchemy

我一直在尝试根据网络上的多个帖子修复上述错误,但我无法使其正常工作。

我使用SQLAlchemy 1.3.3的模型是:

class User(Base):
    __tablename__ = 'user'

    user_email = Column(String(255), primary_key=True)
    user_name = Column(String(120))
    user_pass = Column(String(120))
    user_super = Column(INTEGER(11))
    company_id = Column(ForeignKey('company.company_id'), index=True)

    company = relationship('Company')


class UserIncompany(User):
    __tablename__ = 'userincompany'
    __table_args__ = (
        ForeignKeyConstraint(['branch_company', 'branch_id'], ['branch.company_id', 'branch.branch_id']),
        ForeignKeyConstraint(['dstcentre_company_id', 'dstcentre_branch', 'dstcentre_id'], ['procentre.company_id', 'procentre.branch_id', 'procentre.dstcentre_id']),
        ForeignKeyConstraint(['userrole_company', 'role_number'], ['userrole.company_id', 'userrole.role_number']),
        Index('fk_usercompany_userrole1_idx', 'userrole_company', 'role_number'),
        Index('fk_table2_dstcentre1_idx', 'dstcentre_company_id', 'dstcentre_branch', 'dstcentre_id'),
        Index('fk_table2_branch1_idx', 'branch_company', 'branch_id')
    )

    user_email = Column(String(255), ForeignKey('user.user_email'), primary_key=True, nullable=False)
    user_supervisor = Column(String(255), ForeignKey('user.user_email'), index=True)
    user_admin = Column(INTEGER(11))
    user_mancycles = Column(INTEGER(11))
    user_maninv = Column(INTEGER(11))
    user_manstock = Column(INTEGER(11))
    branch_company = Column(String(12))
    branch_id = Column(String(12))
    dstcentre_company_id = Column(String(12))
    dstcentre_branch = Column(String(12))
    dstcentre_id = Column(String(12))
    userrole_company = Column(String(12), nullable=False)
    role_number = Column(INTEGER(11), nullable=False)

    branch = relationship('Branch')
    dstcentre_company = relationship('Procentre')
    company_user = relationship("User", foreign_keys=[user_email])
    supervisor = relationship("User", foreign_keys=[user_supervisor])

    userrole = relationship('Userrole')

User和UserInCompany之间的关系是一对一的。我表明user_email是主键,也是两个关系,但是我仍然收到错误:

sqlalchemy.exc.AmbiguousForeignKeysError: Can't determine join between 'user' and 'usercompany'; tables have more than one foreign key constraint relationship between them. Please specify the 'onclause' of this join explicitly.

我尝试同时查看SQLAlchemy can't join two tables with two foreign keys between themsqlalchemy.exc.NoForeignKeysError: Could not determine join condition between parent/child tables以及网上的其他内容,但我无法使其正常工作。

非常感谢您的帮助。

0 个答案:

没有答案