因工作需要,在项目中使用了peewee框架。使用原生语句进行查询的时候发现如果用了聚合函数,查询出来的结果会有失误。假设我用了
where = "select count(*) from blog"
result = Blog.raw(where)
那么结果会是Blog表的全部字段,而且查询集包含很多条记录,里面没有count(*)的值。这是使用ORM的一个弊端,查询的结果只能是你选择的那个表中的字段,使用join也是一样的。
解决的方法有:给想要的值取名为该表中存在的字段。
假如blog中有title这个字段,那么:
where = "select count(*) as title from blog"
result = Blog.raw(where)
result = self.query2dict(result)#这是自己封装的将查询集转化为字典的方法,peewee有model_to_dict
count = result[0]['title']