首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在sqlalchemy中使用sum和case时出现错误

在sqlalchemy中使用sum和case时出现错误
EN

Stack Overflow用户
提问于 2020-08-28 13:16:12
回答 1查看 203关注 0票数 1

我在having条件下使用带有casesqlalchemy func.sum,但出现以下错误。代码:

代码语言:javascript
复制
query = query.having(
            func.sum(case([(e.c.escalation_type.in_(escalation_types), 1)], else_=0)) > 0
        )

上面的escalation_types is Python list获取此错误:

代码语言:javascript
复制
asyncpg.exceptions.UndefinedFunctionError: function sum(text) does not exist
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

下面是上面打印的SQL

代码语言:javascript
复制
HAVING sum(CASE WHEN (escalation_1.escalation_type IN (:escalation_type_1)) THEN :param_1 ELSE :param_2 END) > :sum_1

这里我漏掉了什么?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-28 17:35:53

看起来sqlalchemy的其中一个库asyncpg中有一个bug。我必须将1和0转换为整数才能使其工作。以下是工作代码:

代码语言:javascript
复制
query = query.having(
            func.sum(
                case(
                    [(e.c.escalation_type.in_(escalation_types), cast(1, Integer))],
                    else_=cast(0, Integer),
                )
            )
            > 0
        )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63627858

复制
相关文章

相似问题

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