问题:

peewee 的 .count 方法是必须要加参数的,不加参数就会翻译成 count() ,是非法的 SQL

SQL 的 count 必须加 * 或者具体的字段

而 peewee 的 count 方法直接加 .count('') 是不行的,会被翻译成 count(''),也是非法的 SQL

合法的 SQL 是 count(*)

解决办法

回到问题「peewee 怎么实现 count(*) 」问了 3 个 ai: chatgpt、deepseek v3、gemini2 都回答不对

最后自己去 github 的 issue 里面翻了一下,作者给出了方法

就是用 peewee 的 SQL 函数,如下面这样 ⬇️

from peewee import SQL


Model.select(Model.count(SQL('*')) 

参考:Aliasing an arithmetic expression


universe_king
3.4k 声望680 粉丝