如何在peewee做一个IN操作员

时间:2015-01-06 18:31:09

标签: python sql peewee

我有一个存储用户的数据库。这些用户拥有'phone_number'属性。

我想检索一个用户列表,其中'phone_number'包含在我拥有的列表中。

类似的东西:

contacts = ["123","321","456","654"]
friends = []
for user in User.select(User.phone_number).where(User.phone_number in contacts):
    friends.append(user.phone_number)

问题:这段代码会返回每个用户的电话号码,而不仅仅是联系人中包含的电话号码。

我可以实现我想要的目标:

friends = [u.phone_number for u in User.select(User.phone_number) if u.phone_number in contacts]

但据我所知,这种方法可能首先从数据库中检索所有用户,将它们转换为python对象,然后进行过滤。如果我拥有大量用户,那似乎非常低效,因为它是python进行过滤而不是数据库。

1 个答案:

答案 0 :(得分:4)

本文档显示了peewee的查询运算符: http://peewee.readthedocs.org/en/latest/peewee/querying.html#query-operators

要具体回答您的问题,您可以

User.phone_number << contacts