【问题标题】:filter enum in list of enums sqlalchemy在枚举列表中过滤枚举 sqlalchemy
【发布时间】:2021-10-26 14:56:32
【问题描述】:

我在 python 中有以下枚举:

class Status(enum.Enum):
    produced = 1
    consumed = 2
    success = 3
    failed = 4

以及下面的 SQLAlchemy 模型

class Message(Base):
    __tablename__ = 'table'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    status = Column(Enum(Status))

我想过滤查询中的几个状态,如下所示:

session.query(Message).filter(Message.status in [Status.failed, Status.success])

但是不管我的数据库里有什么,结果总是空的,可能是因为不了解Message.status的类型。

但是,这确实有效:

session.query(Message).filter(Message.status == Status.failed or Message.status == Status.success)

【问题讨论】:

    标签: python enums sqlalchemy


    【解决方案1】:

    您应该使用 in_ 运算符:

    session.query(Message).filter(Message.status.in_((Status.failed, Status.success)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-29
      • 2012-09-22
      • 2016-07-08
      • 2010-12-10
      • 1970-01-01
      • 2012-04-20
      相关资源
      最近更新 更多