有没有办法使用 boto3 在 DynamoDB 中手动增加 pk?

问题描述 投票:0回答:1

我正在尝试编写一个函数,使用 boto3 将数据插入到我的 dynamoDB 中。我试图找到数据库中最大的 ID 并将其加一,以便将其提供给我插入的对象,使其成为最新的 ID。我知道 dynamoDB 不支持自动增量,并且大多数人会建议使用 UUID,但这需要我重组我的表,如果可能的话,我希望避免这种情况。有没有办法找到属性的最大数量,以便我可以手动增加它以进行插入?

我尝试使用describe_table函数来获取项目计数,但是它仅每6小时更新一次,这对于我的用例来说效果不佳。我还尝试了以下代码块,但我刚刚在网上找到它,它抛出一个错误,指出提供的关键元素与架构不匹配。

    response = table.update_item(
        Key={'pk': 'transaction_id'},
        UpdateExpression="ADD #cnt :val",
        ExpressionAttributeNames={'#cnt': 'count'},
        ExpressionAttributeValues={':val': 1},
        ReturnValues="UPDATED_NEW"
    )
amazon-web-services amazon-dynamodb boto3 dynamodb-queries
1个回答
0
投票

我的猜测是你不需要太多规模?因此,我建议您使用静态分区键值,并且现在用作分区键的应该是排序键。

这两个博客相结合将为您提供问题的解决方案:

另一种方法是使用事务,每次添加项目时,您都会更新计数器项目以记录当前分区键值。事务会增加您的写入吞吐量消耗,而不是 1 WCU,您会将其增加到 4 WCU,因为您需要使用事务写入两个项目。

© www.soinside.com 2019 - 2024. All rights reserved.