Я пытаюсь настроить таблицу postgresql с двумя внешними ключами, которые указывают на один и тот же первичный ключ в другой таблице.
Когда я запускаю script, я получаю сообщение об ошибке
sqlalchemy.exc.AmbiguousForeignKeysError: Could not determine join condition between parent/child tables on relationship Company.stakeholder - there are multiple foreign key paths linking the tables. Specify the 'foreign_keys' argument, providing a list of those columns which should be counted as containing a foreign key reference to the parent table.
Это точная ошибка в SQLAlchemy Documentation, но когда я реплицирую то, что они предложили в качестве решения, ошибка не исчезнет. Что я могу делать неправильно?
#The business case here is that a company can be a stakeholder in another company.
class Company(Base):
__tablename__ = 'company'
id = Column(Integer, primary_key=True)
name = Column(String(50), nullable=False)
class Stakeholder(Base):
__tablename__ = 'stakeholder'
id = Column(Integer, primary_key=True)
company_id = Column(Integer, ForeignKey('company.id'), nullable=False)
stakeholder_id = Column(Integer, ForeignKey('company.id'), nullable=False)
company = relationship("Company", foreign_keys='company_id')
stakeholder = relationship("Company", foreign_keys='stakeholder_id')
Я видел похожие вопросы здесь, но некоторые ответы рекомендуют использовать primaryjoin
, но в документации он утверждает, что вам не нужен primaryjoin
в этой ситуации.