如何在Python Peewee ORM中使用`WHERE value IN list`进行查询?
我在我的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'])