Search code examples
python-3.xpeewee

What is the difference between these Peewee query filter forms


In the description of filtering records in Peewee, there are examples of two alternative syntaxes: using commas to separate multiple conditions, such as the following example,

Tweet.select().where(Tweet.user == user, Tweet.is_published == True)

and using bitwise operators. I cannot figure out (and cannot find a description of) the difference between using the comma syntax and using bitwise operators. What does the comma syntax actually do? From the (single) documented example of using a comma, it seems like it might be equivalent to using &, as in

Tweet.select().where( (Tweet.user == user) & (Tweet.is_published == True) )

Is that the case?


Solution

  • Yes, they are equivalent, as per the code:

        def where(self, *expressions):
            if self._where is not None:
                expressions = (self._where,) + expressions
            self._where = reduce(operator.and_, expressions)