我有通过基础设施即代码实现创建的现有 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']
如何在之前未定义属性的情况下放置项目?
我昨天遇到了完全相同的问题,经过几个小时的摸索,我终于弄清楚,在使用这个低级API时,我们必须使用AttributeValue的格式来指定附加属性(包括相应的数据类型) ).
所以你可能应该写这样的东西:
table = TableConnection('ExistingTable')
table.put_item(
user_id,
transaction_id,
attributes={
"timestamp": {"N": timestamp},
"symbol": {"S": symbol},
"quantity": {"N": quantity},
},
)