Python SQLAlchemy核心表达式-合并和CASE

Python SQLAlchemy核心表达式-合并和CASE,python,sqlalchemy,case,coalesce,Python,Sqlalchemy,Case,Coalesce,我正在尝试生成与此SQL对应的核心表达式: 但是,此表达式失败: q = select([ component, base_vee, case( [ (coalesce(base_vee.c.affidavit, '') == '') ], else_=True).label('emptyish') ]). \ where( and_( comp

我正在尝试生成与此SQL对应的核心表达式:

但是,此表达式失败:

q = select([
    component,
    base_vee,
    case(
        [
            (coalesce(base_vee.c.affidavit, '') == '')
        ],
        else_=True).label('emptyish')
    ]). \
    where(
        and_(
            component.c.id.in_(comp_ids),
            component.c.id == base_vee.c.component_id,
            base_vee.c.type == 'typical',
        )
    )
例外情况:

  File "/export/home/myuser/mysite/mysite/afile.py", line 527, in afunc
    else_=True).label('emptyish')
  File "<string>", line 2, in case
  File "/export/home/myuser/mysite/ve/lib/python2.7/site-packages/sqlalchemy/sql/elements.py", line 2187, in __init__
    _literal_as_binds(r)) for (c, r) in whens
  File "/export/home/myuser/mysite/ve/lib/python2.7/site-packages/sqlalchemy/sql/operators.py", line 343, in __getitem__
    return self.operate(getitem, index)
  File "/export/home/myuser/mysite/ve/lib/python2.7/site-packages/sqlalchemy/sql/elements.py", line 739, in operate
    return op(self.comparator, *other, **kwargs)
  File "/export/home/myuser/mysite/ve/lib/python2.7/site-packages/sqlalchemy/sql/operators.py", line 343, in __getitem__
    return self.operate(getitem, index)
  File "<string>", line 1, in <lambda>
  File "/export/home/myuser/mysite/ve/lib/python2.7/site-packages/sqlalchemy/sql/type_api.py", line 60, in operate
    return o[0](self.expr, op, *(other + o[1:]), **kwargs)
  File "/export/home/myuser/mysite/ve/lib/python2.7/site-packages/sqlalchemy/sql/default_comparator.py", line 166, in _unsupported_impl
    "this expression" % op.__name__)
afunc中的第527行“
File”/export/home/myuser/mysite/mysite/afile.py”
else=True)。标签('emptyish')
文件“”,第2行,以防
文件“/export/home/myuser/mysite/ve/lib/python2.7/site packages/sqlalchemy/sql/elements.py”,第2187行,在__
_(c,r)在when中的字面值为(r)
文件“/export/home/myuser/mysite/ve/lib/python2.7/site packages/sqlalchemy/sql/operators.py”,第343行,位于__
返回self.operate(getitem,index)
文件“/export/home/myuser/mysite/ve/lib/python2.7/site packages/sqlalchemy/sql/elements.py”,第739行,在operate中
返回op(自比较器,*其他,**kwargs)
文件“/export/home/myuser/mysite/ve/lib/python2.7/site packages/sqlalchemy/sql/operators.py”,第343行,位于__
返回self.operate(getitem,index)
文件“”,第1行,在
文件“/export/home/myuser/mysite/ve/lib/python2.7/site packages/sqlalchemy/sql/type_api.py”,第60行,在operate中
返回o[0](self.expr,op,*(其他+o[1:]),**kwargs)
文件“/export/home/myuser/mysite/ve/lib/python2.7/site packages/sqlalchemy/sql/default\u comparator.py”,第166行,在不支持的impl中
此表达式“%op.”\uuuuu name\uuuuuu)
当我删除
case
表达式时(只留下
coalesce
),它可以正常工作。但我无法让Core接受
案例


如何使其与
案例
一起工作?

事实证明,“RTFM小心”的案例:


结果是“RTFM小心”的情况:

    case(
        [
            (coalesce(base_vee.c.affidavit, '') == '', False)
        ],
        else_=True).label('emptyish')
    ])