我在我的Flask项目中使用(真棒)Python Peewee ORM,但现在我试图用where value in ['a', 'b', 'c']
进行查询。我尝试按如下方式进行:
MyModel.select().where(MyModel.sell_currency in ['BTC', 'LTC'])
但不幸的是,它会返回数据库中的所有记录。我有什么想法可以做到这一点吗?
答案 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