Python 使用DynamoDB transact\u write\u items如何对现有项执行条件检查,并在条件检查为True时放置新项?
仅当特定项已存在时,我才希望在表中插入新项。是否可以使用transact\u write\u项目来实现这一点?我希望避免查询表,然后插入新项Python 使用DynamoDB transact\u write\u items如何对现有项执行条件检查,并在条件检查为True时放置新项?,python,amazon-web-services,amazon-dynamodb,boto3,dynamodb-queries,Python,Amazon Web Services,Amazon Dynamodb,Boto3,Dynamodb Queries,仅当特定项已存在时,我才希望在表中插入新项。是否可以使用transact\u write\u项目来实现这一点?我希望避免查询表,然后插入新项 response = dynamo_client.transact_write_items( TransactItems=[ { 'ConditionCheck': { 'Key': { 'indicator_id': {
response = dynamo_client.transact_write_items(
TransactItems=[
{
'ConditionCheck': {
'Key': {
'indicator_id': {
'S': 'indicator_1'
}
},
'ConditionExpression': 'attribute_exists(#indicator_id)',
'ExpressionAttributeNames': {
'#indicator_id': 'indicator_id'
},
'TableName': 'CAS'
},
'Put': {
'Key': {
'indicator_id': {
'S': 'update_indicator_1'
}
},
'TableName': 'CAS'
}
}
]
)
这会引发以下错误:
botocore.exceptions.ClientError: An error occurred (ValidationException) when calling the TransactWriteItems operation: TransactItems can only contain one of Check, Put, Update or Delete
问题在于语法 正确的语法是:
response = dynamo_client.transact_write_items(
TransactItems=[
{
'ConditionCheck': {
'Key': {
'indicator_id': {
'S': 'indicator_1'
}
},
'ConditionExpression': 'attribute_exists(#indicator_id)',
'ExpressionAttributeNames': {
'#indicator_id': 'indicator_id'
},
'TableName': 'CAS'
}
},
{
'Put': {
'Key': {
'indicator_id': {
'S': 'update_indicator_1'
}
},
'TableName': 'CAS'
}
}
]
)
在您的参数中需要进行2次修改TransactiveItems json中的操作应该重新安排 投入运行时,用项替换键
response = dynamo_client.transact_write_items(
TransactItems=[
{
'ConditionCheck': {
'Key': {
'indicator_id': {
'S': 'indicator_1'
}
},
'ConditionExpression': 'attribute_exists(#indicator_id)',
'ExpressionAttributeNames': {
'#indicator_id': 'indicator_id'
},
'TableName': 'CAS'
}
},
{
'Put': {
'Item': {
'indicator_id': {
'S': 'insert_indicator_2'
}
},
'TableName': 'CAS'
}
}
]
)
在文档()中,即使所有操作都在相同的DICT中提及,但仅用于引用,并且应考虑为“检查”或“放置”或“等”/P> 操作应该是这样的dict的数组(列表)