微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLAlchemy:如何消除外键关系的歧义?

如何解决SQLAlchemy:如何消除外键关系的歧义?

我有一个简单的客户和地址数据模型,带有 sql Alchemy 注释,使对象可以在数据库中持久化。不幸的是,当我尝试使用 c = Customer() 创建客户对象时,我收到一个错误

sqlalchemy.exc.AmbiguousForeignKeysError: Could not determine join condition between parent/child
tables on relationship Customer.addresses - 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.

这很清楚——我需要进一步注释该行:

addresses = relationship("Address",back_populates="customer")

用一些东西来消除外键关系的歧义。但是,我无法理解在这种情况下我需要(或可以)指定什么。有人能指出我正确的方向吗?

更新:进一步看,在我看来,sqlAlchemy 正在尝试推断 addresses 关系的方向并且无法这样做,因为有是这些类之间各个方向的 PK/FK 关系。这无法通过在 foreign_keys= 关系上添加 addresses解决,因为此关系的外键在另一个表中。

我可以通过从 addresses 中完全删除 Customer 关系,而是在 Address 类中执行 customer = relationship("Customer",backref="addresses",foreign_keys=[customer_id]) 来实现这一点。但是,我不太喜欢这个解决方案,因为我想在 addresses 类中“表达”Customer,而不是作为在customer 类。

因此,仍在寻找修改 Address 关系以使其工作的方法

这是我的整个模型:

addresses

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。