我正在为我的Flask项目使用(很棒的)Python Peewee ORM,但现在我尝试使用 where value in ['a', 'b', 'c']
进行查询时卡住了。我尝试按照如下方式执行:
MyModel.select().where(MyModel.sell_currency in ['BTC', 'LTC'])
但是不幸的是它返回了数据库中的所有记录。你有什么想法可以解决这个问题吗?
文档中已经有了答案:x << y
将执行 x IN y,其中 y 是一个列表或查询。因此最终的查询将如下所示:
MyModel.select().where(MyModel.sell_currency << ['BTC', 'LTC'])
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))
x in y
的返回值强制转换为布尔类型,因此需要使用<<
运算符。 - coleiferx in y
对于新手来说更加直观易懂。而直观的数据库使用正是 Peewee 优秀的地方之一.. (顺便感谢您创建的 peewee; 我已经使用了半年了,非常棒!) - kramer65MyModel.sell_currency.in_(['BTC', 'LTC'])
。 - coleifer