DynamoDB 更新多个值
DynamoDB Update Multiple values
我在 DynamoDB 中存储了以下 table:
{
"name" :"A",
"videos": [
{
"playlistId" : "ABCD"
"title" : "Hello, world!"
}
]
}
我想做成下面的:
{
"name" :"A",
"videos": [
{
"playlistId" : "ABCD"
"title" : "Hello, world!"
},
{
"playlistId" : "EFGH"
"title" : "Bye, world!"
},
{
"playlistId" : "IJKL"
"title" : "Good morning, world!"
}
]
}
我尝试使用 DynamoDB Create 操作来执行此操作,但它引发了 Duplicate Key 错误,因为所有三个视频对象都具有相同的主键(“名称”)。
现在,我正在尝试通过附加到列表来更新“视频”来做到这一点。当我这样做时,它会抛出不支持的类型错误。有人可以在这方面将我推向正确的方向吗?
你必须使用 UpdateExpression
update_item
boto3 API。以下是我尝试插入项目的代码:
import boto3
ddb_session = boto3.resource('dynamodb', region_name='us-east-1')
table = ddb_session.Table('test_table')
table.put_item(Item={
'name': 'A',
'videos': [
{
"playlistId": "ABCD",
"title": "Hello, world!"
}
]})
要更新项目 A
,可以使用以下代码:
import boto3
ddb_session = boto3.resource('dynamodb', region_name='us-east-1')
table = ddb_session.Table('test_table')
table.update_item(
Key={'name': 'A'},
UpdateExpression='SET #VALUE = :value',
ExpressionAttributeNames={
'#VALUE': 'videos'
},
ExpressionAttributeValues={
':value': [
{
"playlistId": "ABCD",
"title": "Hello, world!"
},
{
"playlistId": "EFGH",
"title": "Bye, world!"
},
{
"playlistId": "IJKL",
"title": "Good morning, world!"
}
]
},
)
现在让我们也看看输出。在 put_item
你会得到类似下面的内容:
调用 update_item
时,您会得到如下信息:
这是预期的问题。您可以阅读更多关于 UpdateExpression
here
我在 DynamoDB 中存储了以下 table:
{
"name" :"A",
"videos": [
{
"playlistId" : "ABCD"
"title" : "Hello, world!"
}
]
}
我想做成下面的:
{
"name" :"A",
"videos": [
{
"playlistId" : "ABCD"
"title" : "Hello, world!"
},
{
"playlistId" : "EFGH"
"title" : "Bye, world!"
},
{
"playlistId" : "IJKL"
"title" : "Good morning, world!"
}
]
}
我尝试使用 DynamoDB Create 操作来执行此操作,但它引发了 Duplicate Key 错误,因为所有三个视频对象都具有相同的主键(“名称”)。
现在,我正在尝试通过附加到列表来更新“视频”来做到这一点。当我这样做时,它会抛出不支持的类型错误。有人可以在这方面将我推向正确的方向吗?
你必须使用 UpdateExpression
update_item
boto3 API。以下是我尝试插入项目的代码:
import boto3
ddb_session = boto3.resource('dynamodb', region_name='us-east-1')
table = ddb_session.Table('test_table')
table.put_item(Item={
'name': 'A',
'videos': [
{
"playlistId": "ABCD",
"title": "Hello, world!"
}
]})
要更新项目 A
,可以使用以下代码:
import boto3
ddb_session = boto3.resource('dynamodb', region_name='us-east-1')
table = ddb_session.Table('test_table')
table.update_item(
Key={'name': 'A'},
UpdateExpression='SET #VALUE = :value',
ExpressionAttributeNames={
'#VALUE': 'videos'
},
ExpressionAttributeValues={
':value': [
{
"playlistId": "ABCD",
"title": "Hello, world!"
},
{
"playlistId": "EFGH",
"title": "Bye, world!"
},
{
"playlistId": "IJKL",
"title": "Good morning, world!"
}
]
},
)
现在让我们也看看输出。在 put_item
你会得到类似下面的内容:
调用 update_item
时,您会得到如下信息:
这是预期的问题。您可以阅读更多关于 UpdateExpression
here