我目前在自我参照关系方面遇到问题。
我有一个Customer
表,它可以有一个父级(也有一个Customer
),
class CustomerModel(db.Model):
__tablename__ = 'customer'
id = Column(Integer, primary_key=True)
parent_id = Column(Integer, ForeignKey('customer.id'))
parent = relationship("CustomerModel", foreign_keys=[parent_id])
所以我的问题是,当我尝试加载父级时,以下查询由SQLAlchemy构建:
让我们以该客户为例:Customer(id=1, parent_id=10)
SELECT *
FROM customer
WHERE 1 = customer.parent_id
WHERE条件是错误的,因为它会将parent_id
与我要从中加载父级的客户的id
进行比较。
正确的查询应该是:
SELECT *
FROM customer
WHERE 10 = customer.parent_id
我在做什么错了?
答案 0 :(得分:0)
所以我终于找到了答案。
我需要像这样添加参数remote_side:
class CustomerModel(db.Model):
__tablename__ = 'customer'
id = Column(Integer, primary_key=True)
parent_id = Column(Integer, ForeignKey('customer.id'))
parent = relationship("CustomerModel", foreign_keys=[parent_id], remote_side=[id])