Я пытался исправить указанные ошибки в нескольких постах в Интернете, но я просто не могу заставить его работать.
Моя модель с 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: Не удалось определить условие соединения между родительскими / дочерними таблицами и некоторыми другими в сети, но я просто не могу заставить его работать.
Очень полезна помощь.