amazon-web-services - 单个 boto3 dynamodb 客户端可以同时更新多个表吗?
问题描述
client = boto3.resource('dynamodb')
我想知道我是否能够同时使用这个客户端的 2 个表来使用 batchwriteitem,还是应该创建另一个客户端?dynamodb 甚至可以处理不同表的同时更新吗?
解决方案
是的,您可以使用同一个客户端同时在两个或多个表中写入或删除项目,文档
BatchWriteItem 操作在一个或多个表中放置或删除多个项目。对 BatchWriteItem 的一次调用可以写入多达 16 MB 的数据,其中可以包含多达 25 个放置或删除请求。要写入的单个项目可以大到 400 KB
import boto3
client = boto3.client("dynamodb")
response = client.batch_write_item(
RequestItems={
"table_1": [
{
"PutRequest": {
"Item": {
"Key": {
"S": "key1",
}
}
},
},
{
"PutRequest": {
"Item": {
"Key": {
"S": "key2",
}
}
},
},
],
"table_2": [
{
"PutRequest": {
"Item": {
"Key": {
"S": "key1",
}
}
},
},
{
"PutRequest": {
"Item": {
"Key": {
"S": "key2",
}
}
},
},
],
},
ReturnConsumedCapacity="TOTAL",
)
# output
{'UnprocessedItems': {}, 'ConsumedCapacity': [{'TableName': 'table_1', 'CapacityUnits': 2.0}, {'TableName': 'table_2', 'CapacityUnits': 2.0}], 'ResponseMetadata': {'RequestId': 'XXX', 'HTTPStatusCode': 200, 'HTTPHeaders': {'server': 'Server', 'date': 'Fri, 06 Aug 2021 01:53:43 GMT', 'content-type': 'application/x-amz-json-1.0', 'content-length': '132', 'connection': 'keep-alive', 'x-amzn-requestid': 'XXX', 'x-amz-crc32': '123'}, 'RetryAttempts': 0}}
推荐阅读
- javascript - 填写表格时如何使进度条工作
- c# - URL 重写中间件 ASP.Net Core 2.0
- scala - 将 IntelliJ 指向已安装的 Scala
- python - 在 Featuretools 中使用多个训练窗口计算相同的特征
- python - 如何在python中的方法内模拟导入
- java - 无法使用 java 8 144 在 glassfish 4 上显示控制台并使用 eclipse
- php - echo PHP 中的 div 类
- swift - Firebase:登录时找不到用户
- php - 在 laravel 5.4 中运行任务计划时邮件不起作用
- dart - 如何更新地图视图类中的相机位置