How to do query with `WHERE value IN list` in the Python Peewee ORM?
I'm using the (awesome) Python Peewee ORM for my Flask project, but I now got stuck trying to do a query with a where value in ['a', 'b', 'c']. I tried doing it as follows:
MyModel.select().where(MyModel.sell_currency in ['BTC', 'LTC'])
But unfortunately it returns all records in the DB. Any ideas how I could do this?
The docs has the answer: x << y will perform x IN y, where y is a list or query. So the final query will look like:
MyModel.select().where(MyModel.sell_currency << ['BTC', 'LTC'])
You can also do "IN" expressions with a subquery. For example, to get users whose username starts with "a":
a_users = User.select().where(fn.Lower(fn.Substr(User.username, 1, 1)) == 'a')
The .in_() method signifies an "IN" query
a_user_tweets = Tweet.select().where(Tweet.user.in_(a_users))