我无法在SQLAlchemy中加载自我参考

时间:2019-11-08 17:43:38

标签: python-3.x sqlalchemy flask-sqlalchemy

我目前在自我参照关系方面遇到问题。

我有一个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

我在做什么错了?

1 个答案:

答案 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])