问题描述
我有一个简单的客户和地址数据模型,带有 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
类。
这是我的整个模型:
addresses
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)