【问题标题】:Peewee return all objects not referenced by foreign keyPeewee 返回所有未被外键引用的对象
【发布时间】:2017-02-17 00:20:23
【问题描述】:

我有坐标和天气事件的模型。坐标对象不引用天气事件,但每个天气对象都有一个指向坐标的 ForeignKeyField。我想返回 Weather 模型中没有被外键引用的所有 Coordinate 对象。

我想对此有一个查询,但以下是我最接近的查询,并说明了我想要实现的目标:

coords = Coordinate.select()
no_weather = Coordinate.select().join(Weather).where(~(Weather.coordinate << coords))

我希望我很接近,因为省略“~”确实会返回与天气对象关联的所有坐标对象;我只是想要反过来。

【问题讨论】:

    标签: python-3.x flask sqlite peewee


    【解决方案1】:

    有很多方法可以做到这一点。这是一个:

    (Coordinate
     .select()
     .join(Weather, JOIN.LEFT_OUTER)
     .group_by(Coordinate)
     .having(fn.COUNT(Weather.id) == 0))
    

    也许还有:

    (Coordinate
     .select()
     .where(~fn.EXISTS(
         Weather
         .select()
         .where(Weather.coordinate == Coordinate.id))))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-15
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多