Reputation: 316
I have the following enum in python:
class Status(enum.Enum):
produced = 1
consumed = 2
success = 3
failed = 4
and the following SQLAlchemy model
class Message(Base):
__tablename__ = 'table'
id = Column(Integer, primary_key=True)
name = Column(String)
status = Column(Enum(Status))
I want to filter on several statuses in query like this:
session.query(Message).filter(Message.status in [Status.failed, Status.success])
But no matter what I have in my DB, the results are always empty, it's probably because don't understand the type of Message.status
.
However, this does work:
session.query(Message).filter(Message.status == Status.failed or Message.status == Status.success)
Upvotes: 8
Views: 3642
Reputation: 777
You should use in_ operator:
session.query(Message).filter(Message.status.in_((Status.failed, Status.success)))
Upvotes: 8