Python 如何通过peewee使用if语句进行选择

Python 如何通过peewee使用if语句进行选择,python,orm,peewee,Python,Orm,Peewee,我正在获取所有类别,并将类别表与包含帖子类别的item_类别连接起来。 我的sql就是这样 SELECT category.*,IF(item_category.category_id=NULL, 0,1) is_selected FROM category LEFT JOIN item_category ON category.category_id=item_category.category_id AND item_id=1 我试过了,但没用。因为python在使用if时抛出错误 Ca

我正在获取所有类别,并将类别表与包含帖子类别的item_类别连接起来。 我的sql就是这样

SELECT category.*,IF(item_category.category_id=NULL, 0,1) is_selected
FROM category 
LEFT JOIN item_category ON category.category_id=item_category.category_id AND item_id=1
我试过了,但没用。因为python在使用if时抛出错误

Category.select(Category, ItemCategory, fn.if(ItemCategory.category_id==None, 0, 1) )
if语句的正确用法是什么?
谢谢。

我找到了解决办法,但我不知道这是最好的办法。 我把“fn.if”改成了“fn.if”,效果很好

Category.select(Category, ItemCategory, fn.IF(ItemCategory.category_id==None, 0, 1) ) 
使用Case函数获得所需的输出,就像peewee官方代码源后面的IF/ELSE一样

这里,Case的参数是-

第一个参数:谓词默认为大小写 第二个参数:包含conditionItemCategory.category\u id==None和条件传递值0的表达式\u元组 第三个参数:ELSE值1
我不熟悉IF,但您也可以使用用例。有关详细信息,请查看案例文档:@coleifer谢谢。如果有,您可以找到有关mysql的信息
from peewee import Case

Category.select(
    Category,
    ItemCategory,
    Case(None, [((ItemCategory.category_id==None), 0)], 1)
)