SqlAlchemy CASE Statement: ValueError: too many values to unpack (expected 2)

SqlAlchemy CASE Statement: ValueError: too many values to unpack (expected 2)

有谁知道为什么以下 SqlAlchemy CASE 语句失败并显示以下错误消息:

casePrimaryApprover = case(
    [
        (and_(
            (agreement.approving_official_id.is_not(None)),
            (approver.current_flag == 'Y'),
            (approver.inactive_date.is_(None)), 
            (approver.organizationalstat == 'EMPLOYEE'),
            or_(
                (participatingIc.ic_nihsac == func.substr(approver.nihsac, 1, 3)), 
                (externalPeoplePrimaryApprover.id.is_not(None))
            )
        )), 'Y'
    ],
    else_ = 'N'
)

错误

    casePrimaryApprover = case(
  File "<string>", line 2, in case

  File "C:\gitForVS\sm_telework\venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 2844, in __init__
    whenlist = [
  File "C:\gitForVS\sm_telework\venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 2844, in <listcomp>
    whenlist = [
ValueError: too many values to unpack (expected 2)

注意这应该对应于SQL

            CASE
                WHEN
                    agreement_t_1.approving_official_id is not null and 
                    ned_person_t_2.current_flag = 'Y' and
                    ned_person_t_2.inactive_date is null and
                    ned_person_t_2.organizationalstat = 'EMPLOYEE' and 
                    (pi.ic_nihsac = substr(ned_person_t_2.nihsac,1,3) 
                      or
                     epApprover.id is not null)
               THEN
                   'Y'
               ELSE
                   'N'
            END AS APPROVER1, 

我修好了。与 SqlAlchemy Case with multiple conditions `and_` more than two values?

中的问题相同

我的倒数第二个右括号必须在 'Y' 之前。

casePrimaryApprover = case(
    [
        (and_(
            (agreement.approving_official_id.is_not(None)),
            (approver.current_flag == 'Y'),
            (approver.inactive_date.is_(None)), 
            (approver.organizationalstat == 'EMPLOYEE'),
            or_(
                (participatingIc.ic_nihsac == func.substr(approver.nihsac, 1, 3)), 
                (externalPeoplePrimaryApprover.id.is_not(None))
            )
        ), 'Y')
    ],
    else_ = 'N'
)