Python SQLAlchemy一对一,在每个表中存储外键?
我有一个关系,这是一对一之间的笼子代码和邓斯数字 我已经建立了这样的关系,在每个表上存储一个ForeignKeyPython SQLAlchemy一对一,在每个表中存储外键?,python,python-3.x,sqlalchemy,Python,Python 3.x,Sqlalchemy,我有一个关系,这是一对一之间的笼子代码和邓斯数字 我已经建立了这样的关系,在每个表上存储一个ForeignKey class Cage(Base): __tablename__ = 'DimCage' id = Column(Integer, primary_key=True) cage = Column(String(8), unique=True, nullable=False) duns_id = Column(Integer, ForeignKey('D
class Cage(Base):
__tablename__ = 'DimCage'
id = Column(Integer, primary_key=True)
cage = Column(String(8), unique=True, nullable=False)
duns_id = Column(Integer, ForeignKey('DimDuns.id'))
duns = relationship('Duns', uselist=False, back_populates='cage')
class Duns(Base):
__tablename__ = 'DimDuns'
id = Column(Integer, primary_key=True)
duns = Column(String(10), unique=True, nullable=False)
dunsInt = Column(Integer, unique=True, nullable=False)
cage_id = Column(Integer, ForeignKey('DimCage.id'))
cage = relationship('Cage', uselist=False, back_populates='duns')
当我创建表时,我会遇到以下错误,如何设置外键以便在两个表上都保留引用
sqlalchemy.exc.AmbiguousForeignKeyError:无法确定'DimCage'和'DimDuns'之间的联接;表之间有多个外键约束关系。请明确指定此联接的“onclause”
在处理上述异常的过程中,发生了另一个异常:
sqlalchemy.exc.AmbiguousForeignKeyError:无法确定关系Cage.duns上的父/子表之间的联接条件-有多个外键路径链接这些表。指定'foreign_keys'参数,提供应计为包含对父表的外键引用的列的列表
我相信一对一关系只需要存储一个外键。
看
您不应该以这种方式丢失任何数据访问。如果从
Cage
中删除duns\u id
列,现在可以通过Cage.duns.id
而不是Cage.duns\u id来访问id,这是我通常的做法,我不知道人们是否将fk放在两个表中。这些例子确实显示了父母与孩子之间的关系,这更像是兄弟之间的关系。这不是问题的答案。