AmbiguousForeignKeysError: Невозможно определить соединение между - PullRequest
2 голосов
/ 21 мая 2019

Я пытался исправить указанные ошибки в нескольких постах в Интернете, но я просто не могу заставить его работать.

Моя модель с 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')

Отношения между Пользователем и 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 не может объединить две таблицы с двумя внешними ключами между ними также sqlalchemy.exc.NoForeignKeysError: Не удалось определить условие соединения между родительскими / дочерними таблицами и некоторыми другими в сети, но я просто не могу заставить его работать.

Очень полезна помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...