Kallie
Kallie

Reputation: 316

filter enum in list of enums sqlalchemy

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

Answers (1)

hmn Falahi
hmn Falahi

Reputation: 777

You should use in_ operator:

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

Upvotes: 8

Related Questions