使用字段组合在 python peewee 中查询

Posted

技术标签:

【中文标题】使用字段组合在 python peewee 中查询【英文标题】:Querying in python peewee using combination of fields 【发布时间】:2016-10-26 11:52:14 【问题描述】:

我有一个包含字段 name:string 和 id_no:integer 的表,我从外部来源获得 name 和 id_no 列表,我需要使用 peewee ORM 获取具有此组合的记录。

例如:

input = [
'name':'name1', 'id_no': 1,
'name':'name2', 'id_no': 2,
'name':'name3', 'id_no': 3,
]

为了获取具有上述数据组合的记录,我应该编写什么查询?

mysql中的类似查询:

SELECT * FROM table_name
WHERE CONCAT(convert(id_no, char), ':', name) IN ('1:name1','2:name2','3:name3')

【问题讨论】:

【参考方案1】:

我会这样写:

import operator

data = [
  'name':'name1', 'id_no': 1,
  'name':'name2', 'id_no': 2,
  'name':'name3', 'id_no': 3,
]
conditions = [
  ((MyModel.name == item['name']) & (MyModel.id_no == item['id_no']))
  for item in data]
expr = reduce(operator.or_, conditions)
query = MyModel.select().where(expr)

【讨论】:

以上是关于使用字段组合在 python peewee 中查询的主要内容,如果未能解决你的问题,请参考以下文章

如何从 peewee 数据库中获取行数?

peewee中创建自己的Field

有没有办法通过 mixin 设置 peewee 字段?

Peewee:如何更新特定字段?

如何将此查询转换为 Peewee ORM?

Peewee 在运行时注册新模型