在枚举 sqlalchemy 列表中过滤枚举
filter enum in list of enums sqlalchemy
我在 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)
您应该使用 in_ 运算符:
session.query(Message).filter(Message.status.in_((Status.failed, Status.success)))
我在 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)
您应该使用 in_ 运算符:
session.query(Message).filter(Message.status.in_((Status.failed, Status.success)))