使用 PynamoDB 放置具有新属性的项目

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

我有通过基础设施即代码实现创建的现有 DynamoDB 表。

我使用 TableConnection 连接到现有表并运行较低级别的命令

put_item

我的表是用哈希键 (

userId
) 和排序键 (
transactionId
) 定义的。

我想放置一个具有附加属性的项目(

timestamp
symbol
quantity
)。

我还没有定义这些附加属性。

当我运行以下命令时:

table = TableConnection('ExistingTable')
table.put_item(user_id, transaction_id, attributes={...})

我收到以下错误:

ValueError: No attribute timestamp in ['userId', 'transactionId']

如何在之前未定义属性的情况下放置项目?

python amazon-dynamodb pynamodb
1个回答
0
投票

我昨天遇到了完全相同的问题,经过几个小时的摸索,我终于弄清楚,在使用这个低级API时,我们必须使用AttributeValue的格式来指定附加属性(包括相应的数据类型) ).

所以你可能应该写这样的东西:

table = TableConnection('ExistingTable')
table.put_item(
    user_id,
    transaction_id,
    attributes={
        "timestamp": {"N": timestamp},
        "symbol": {"S": symbol},
        "quantity": {"N": quantity},
    },
)
© www.soinside.com 2019 - 2024. All rights reserved.