【问题标题】:How to add results from a JSON stored in POSTGRESQL?如何从存储在 POSTGRESQL 中的 JSON 添加结果?
【发布时间】:2020-02-13 00:41:53
【问题描述】:

如何从存储在 POSTGRESQL 中的 JSON 添加结果?

但是,查询中返回错误。

“金额”字段为字符串格式。有什么可以转换为整数并加上 SUM 的吗?

我就是这样做的。

Transactions.objects.filter(id=id, metadata__metadata__deleted='false')\
                                                                    .annotate(amount=RawSQL("metadata->>%s", ("amount", )))\
                                                                    .aggregate(amountTotal=Sum('amount'))

Transactions.objects.filter(id=id, metadata__metadata__deleted='false')\
                                                                    .annotate(l=RawSQL("data->>%s", (int("amount"),)))\
                                                                    .aggregate(clicked=Sum('l'))

django.db.utils.ProgrammingError: 列引用“元数据”是 模棱两可的LIBERTYBLUE |第 1 行:从 (SELECT 中选择 SUM("l") (元数据->>'amount') AS "l" FR...

【问题讨论】:

    标签: django python-3.x postgresql django-models


    【解决方案1】:

    我不确定它是否有帮助。但下面是我使用 MySQL 数据库在我的项目中实现的方法。

    from django_mysql.models.fields.json import KeyTransform
    
    Table.objects.all().annotate(amount = KeyTransform('json_key/Dictionary_key)', 'field_name')).aggregate(Sum('amount'))
    

    【讨论】:

    • 你好。感谢您的反馈。它部分起作用了。但是在 SUM 中发出了错误。函数 sum(jsonb) 不存在
    猜你喜欢
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    相关资源
    最近更新 更多