我有一个存储用户的数据库。这些用户拥有'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进行过滤而不是数据库。
答案 0 :(得分:4)
本文档显示了peewee的查询运算符: http://peewee.readthedocs.org/en/latest/peewee/querying.html#query-operators
要具体回答您的问题,您可以
User.phone_number << contacts