python-3.x 使用查询而不是排序键对DynamoDB数据进行排序

mspsb9vt  于 11个月前  发布在  Python
关注(0)|答案(1)|浏览(97)

我是DynamoDB和Python的新手,遇到了一个问题,我必须查询DynamoDB并根据日期列(不是排序键)按降序对数据进行排序。我没有找到任何使用Boto3 API对数据进行排序的方法。
经过2天的广泛研究stackoverflow,和其他网站只回答我得到,这是不可能的.所以只是把我最后的努力.
Date列是String类型,数据格式为YYYYMMDD_HHMMSS。目前我正在使用下面的代码来检索JSON格式的数据。

result = TABLE.query(
    KeyConditionExpression="partitionKey = :pk",
    ExpressionAttributeValues={
        ":pk": partitionKey
    }
)

字符串
这是第一个对查询进行排序的好方法,但是如果不可能使用python库对数据进行排序,它会转换result["items"]并使用排序后的json进行响应。
result["items"]是:

[
    {
        "id": "colV",
        "dateColumn": "20231104_122600",
        # ...
    },
{
        "id": "colV",
        "dateColumn": "20231105_122600",
        # ...
    },
{
        "id": "colX",
        "dateColumn": "20231114_122600",
        # ...
    },
{
        "id": "colX",
        "dateColumn": "20231105_122600",
        # ...
    },
    # ...
]


为清晰起见,进行了小的更正:数据应根据id使用dateColumn进行格式化:因此,对于记录,它应像:Desc order of date

[
{
    "id": "colV",
    "dateColumn": "20231105_122600",
    # ...
},
{
    "id": "colV",
    "dateColumn": "20231104_122600",
    # ...
},

{
    "id": "colX",
    "dateColumn": "20231114_122600",
    # ...
},
{
    "id": "colX",
    "dateColumn": "20231105_122600",
    # ...
},
# ...


]

dluptydi

dluptydi1#

你已经有一个排序键在表上了吗?如果你有,你有2个选择:
1.创建一个GSI,使用date作为排序键。这将允许基于日期自动排序
1.在客户端使用python的sorted函数进行排序。

sorted_list = sorted(result['Items'], key=lambda x: x['dateColumn'])

字符串

相关问题