Как сделать запрос с "где значение в списке" в Python Peewee ORM?
Я использую (удивительный) Python Peewee ORM для моего проекта колбы, но теперь я застрял, пытаясь сделать запрос с where value in ['a', 'b', 'c']
. Я попытался сделать это следующим образом:
MyModel.select().where(MyModel.sell_currency in ['BTC', 'LTC'])
но, к сожалению, он возвращает все записи в БД. Есть идеи, как мне это сделать?
2 ответов
на docs ответ: x << y
выполняет x в y, где y-список или запрос. Поэтому окончательный запрос будет выглядеть так:
MyModel.select().where(MyModel.sell_currency << ['BTC', 'LTC'])
вы также можете делать выражения "IN" с подзапросом. Например, чтобы получить пользователей, чье имя начинается с "а":
a_users = User.select().where(fn.Lower(fn.Substr(User.username, 1, 1)) == 'a')
на .in_()
метод означает запрос "IN"
a_user_tweets = Tweet.select().where(Tweet.user.in_(a_users))
см.http://peewee.readthedocs.io/en/latest/peewee/query_operators.html