Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SQLAlchemy一对一,在每个表中存储外键?_Python_Python 3.x_Sqlalchemy - Fatal编程技术网

Python SQLAlchemy一对一,在每个表中存储外键?

Python 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

我有一个关系,这是一对一之间的笼子代码和邓斯数字

我已经建立了这样的关系,在每个表上存储一个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('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放在两个表中。这些例子确实显示了父母与孩子之间的关系,这更像是兄弟之间的关系。这不是问题的答案。