【问题标题】:SqlAlchemy: case statement (case - if - then -else)SqlAlchemy:case 语句(case - if - then -else)
【发布时间】:2011-03-25 09:30:16
【问题描述】:

我想知道是否有办法使用 SqlAlchemy 创建 case 语句,例如postgresql version

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

【问题讨论】:

标签: python sqlalchemy


【解决方案1】:

【讨论】:

  • 谢谢!我在 google 网站上搜索了 sqlalchemy.org 的“案例”,但这是一个太常见的词。刚刚注意到在 sqlalchemy 网站本身上的搜索会首先显示该页面!
  • 请在您的答案中提供更多链接。
【解决方案2】:

来自SQLAlchemy官方doc的参考

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'")
)

上面将呈现给定的常量而不使用绑定 结果值的参数(但仍用于比较 值),如:

CASE
    WHEN (orderline.qty > 100) THEN 'greaterthan100'
    WHEN (orderline.qty > 10) THEN 'greaterthan10'
    ELSE 'lessthan10'
END

【讨论】: