我正在嘗試對 DynamoDB 表進行簡單的操作。架構非常簡單(哈希鍵)SummaryId:字符串(排序鍵)狀態:字符串def put_item(dynamo_table, summary_id, status): return dynamo_table.put_item( Item={ 'SummaryId': summary_id, 'Status': status }, ReturnValues="ALL_OLD" )def update_item(dynamo_table, summary_id, status): response = dynamo_table.update_item( Key={'SummaryId': summary_id}, AttributeUpdates={ 'Status': status, }, ReturnValues="UPDATED_OLD" ) return responsedef initialize_dynamodb_table(): dynamodb = boto3.Session(profile_name=PROFILE_NAME, region_name=REGION_NAME) \ .resource('dynamodb') return dynamodb.Table(TABLE_NAME)def main(): dynamodb_table = initialize_dynamodb_table() # Update the above item response = put_item(dynamodb_table, "Id1::Id2::Id4", "IN_PROGRESS") pprint(response) response = update_item(dynamodb_table, "Id1::Id2::Id4", "COMPLETE") pprint(response)if __name__ == '__main__': main()PK“Id1::Id2::Id4”的項目不存在。因此 put_item() 預計會添加此項目。我使用 update_item() api 的目的是它將項目狀態從“IN_PROGRESS”更改為“COMPLETE”。相反,update_item() API 在表中創建一個新項目,其中包含 PK“Id1::Id2::Id4”和 RK“COMPLETE”我如何實現預期的行為?提前致謝!
boto3 DynamoDB update_item() API 創建一個新項目而不是更新它
慕田峪4524236
2023-07-18 10:27:48