SqlAlchemy:case语句(case - if - then -else)

Eog*_*anM 14 python sqlalchemy

我想知道是否有办法case用SqlAlchemy 创建一个语句,例如postgresql版本

如果没有简单的方法,也许文字SQL是要走的路?

Phi*_*ham 17

查看有关案例陈述的文档:http://docs.sqlalchemy.org/en/latest/core/sqlelement.html#sqlalchemy.sql.expression.case

  • 请在答案中提供更多链接. (12认同)

ana*_*thi 9

来自SQLAlchemy官方文档的参考

from sqlalchemy import case, literal_column

case(
    [
        (
            orderline.c.qty > 100,
            literal_column("'greaterthan100'")
        ),
        (
            orderline.c.qty > 10,
            literal_column("'greaterthan10'")
        )
    ],
    else_=literal_column("'lessthan10'")
)
Run Code Online (Sandbox Code Playgroud)

以上将渲染给定的常量而不使用结果值的绑定参数(但仍然用于比较值),如下所示:

CASE
    WHEN (orderline.qty > 100) THEN 'greaterthan100'
    WHEN (orderline.qty > 10) THEN 'greaterthan10'
    ELSE 'lessthan10'
END
Run Code Online (Sandbox Code Playgroud)