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))
See http://peewee.readthedocs.io/en/latest/peewee/query_operators.html
来源:https://stackoverflow.com/questions/25179128/how-to-do-query-with-where-value-in-list-in-the-python-peewee-orm