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

24 投票
2 回答
14338 浏览
提问于 2025-04-18 16:22

我在我的Flask项目中使用了(非常棒的)Python Peewee ORM,但现在我遇到了一个问题,想要进行一个查询,条件是where value in ['a', 'b', 'c']。我试着这样写:

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

但是不幸的是,它返回了数据库中的所有记录。有没有什么办法可以解决这个问题呢?

2 个回答

5

你也可以用子查询来做“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

48

文档里有答案:x << y 的意思是 x 在 y 里面,也就是说 y 是一个列表或者查询。所以最终的查询会像这样:

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

撰写回答