Thursday, 6 October 2022

How can I apply a SqlAlchemy `BinaryExpression` as a filter on a list?

I have a list of objects of type MyObject,

@dataclasses.dataclass
Class MyObject:
    attr: int

obj_list: List[MyObject] = [ MyObject(23), ... ]

My database model in SqlAlchemy is defined as

class MyObjectModel(Base):
    __tablename__ = "objects"

    attr = Column(Integer, nullable=False)

Now for a sqlalchemy.sql.elements.BinaryExpression such as

expr = MyObjectModel.attr == 25

I would like to filter obj_list using this BinaryExpression without using SqlAlchemy session.

To clarify, I would like to have a function convert such that

filtered_obj_list = [o for o in obj_list if convert(expr, o)]

where expr can be any BinaryExpression.

We can use SqlAlchemy's internal methods too.

P.S. The reason I want to do this is that I want to make my own customized Mock for my database and need this level of specificity.



from How can I apply a SqlAlchemy `BinaryExpression` as a filter on a list?

No comments:

Post a Comment