【问题标题】:SQLAlchemy filter query results based on other table's fieldSQLAlchemy 根据其他表的字段过滤查询结果
【发布时间】:2020-04-16 00:54:36
【问题描述】:

我遇到了一个不太常见的连接和过滤问题。

这是我的模型;

class Order(Base):
    id = Column(Integer, primary_key=True)
    order_id = Column(String(19), nullable=False)
    ... (other fields)

class Discard(Base):
    id = Column(Integer, primary_key=True)
    order_id = Column(String(19), nullable=False)

我想查询 Order 的所有和完整实例,但仅根据 Order.order_id 字段排除在 Discard.order_id 中匹配的实例。如您所见,order_id 字段之间没有关系。

我尝试了外部左连接,notin_,但没有成功。

【问题讨论】:

    标签: python python-3.x sqlalchemy


    【解决方案1】:

    有了this answer,我已经达到了预期的效果。

    这是我的代码;

    orders = (
        session.query(Order)
        .outerjoin(Discard, Order.order_id == Discard.order_id)
        .filter(Discard.order_id == None)  # noqa: E711
        .all()
    )
    

    我过于关注Discard.order_id == None 的 flake8 错误语法消息,并且正在使用 Discard.order_id is None。看来它们被 sqlalchemy 渲染的方式不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-20
      • 1970-01-01
      • 2021-03-29
      • 2013-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多