如何在Python Peewee ORM中使用`WHERE value IN list`进行查询?

时间:2014-08-07 09:38:52

标签: python orm flask peewee

我在我的Flask项目中使用(真棒)Python Peewee ORM,但现在我试图用where value in ['a', 'b', 'c']进行查询。我尝试按如下方式进行:

MyModel.select().where(MyModel.sell_currency in ['BTC', 'LTC'])

但不幸的是,它会返回数据库中的所有记录。我有什么想法可以做到这一点吗?

2 个答案:

答案 0 :(得分:27)

docs有答案:x << y将执行 x IN y,其中y是列表或查询。所以最终的查询将如下所示:

MyModel.select().where(MyModel.sell_currency << ['BTC', 'LTC'])

答案 1 :(得分:1)

您还可以通过子查询来执行“ IN”表达式。例如,要获取用户名以“ a”开头的用户:

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