在dynamodb中是否有任何api来更新批次的项目.有一个api可以批量编写新项目(BatchWriteItem)并使用UpdateItem更新单个项目.但是可以在一次通话中更新多个项目吗?
小智 25
我现在知道这是一个老问题,但 DynamoDB 最近添加了一个支持更新的事务 api:
更新 — 启动 UpdateItem 操作以编辑现有项目的属性或将新项目添加到表中(如果尚不存在)。使用此操作可以有条件地或无条件地添加、删除或更新现有项目的属性。
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/transaction-apis.html
ap1*_*p14 12
我通过类似的查询到达了这个线程,希望这可能有所帮助。
DynamoDB 支持批量语句执行,文档中对此进行了描述。这适用于客户端对象而不是资源对象。然后我使用了 DynamoDB 支持的 PartiQL 更新语句,并在此处进行了描述。
Python 代码参考看起来像这样:
client = boto3.client('dynamodb')
batch = ["UPDATE users SET active='N' WHERE email='<user_email>' RETURNING [ALL|MODIFIED] [NEW|OLD] *;", "UPDATE users ..."] # Limit to 25 per batch
request_items = [{'Statement': _stat} for _stat in batch]
batch_response = client.batch_execute_statement(Statements=request_items)
Run Code Online (Sandbox Code Playgroud)
这是最少的代码。您可以使用多线程同时执行多个批处理。
小智 9
使用 PartiQL,您可以像 SQL 一样执行批量插入和更新。
| 归档时间: |
|
| 查看次数: |
20379 次 |
| 最近记录: |