首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLAlchemy text()和case():列表达式,获得sqlalchemy.sql.elements.TextClause

SQLAlchemy text()和case():列表达式,获得sqlalchemy.sql.elements.TextClause
EN

Stack Overflow用户
提问于 2022-01-30 10:53:11
回答 1查看 793关注 0票数 1

我有一个用例,我试图使用SQLALchemy的表达式语言生成一个SQL查询,并且部分查询是由用户提供的,这是一个条件。示例-“房间>10”作为字符串,其中“房间”是表中的一列.例子-

代码语言:javascript
复制
case(
    ('rooms > 10', 0),
    else_=1
).label(col_name)

现在,我的第一个想法是通过SQLAlchemy将其包装到text()函数中。例子-

代码语言:javascript
复制
case(
    (text('rooms > 10'), 0),
    else_=1
).label(col_name)

但是根据文档(https://docs.sqlalchemy.org/en/14/core/tutorial.html#using-text-fragments-inside-bigger-statements),我们可以在select()中使用它,而不是使用case()。

有什么办法可以做到这一点吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-01-30 22:53:21

其中一项工作是将整个case语句转换为字符串,并在其上使用Text()。

代码语言:javascript
复制
text(f'CASE WHEN room > 10 THEN 0 ELSE 1 END AS {col_name}')

但是,如果某些DB的SQL语法在情况下有所不同,这显然会失败。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70913943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档