我正在尝试创建一个新地图,同时也为它指定一个新值
这是我要存储在数据库中的数据格式:
{
"user_id": 1,
"project_id": 1,
"MRR": {
"NICHE": {
"define your niche": {
"vertical": "test",
"ideal prospect": "He is the best"
}
},
"Environment": {
"Trend 1": {
"description": "something"
},
"Trend 2": {
"description": "something else"
}
}
}
}
到目前为止,我插入数据的代码是:
def update_dynamo(user_id, project_id, group, sub_type, data):
dynmoTable.update_item(
Key = {
"user_id": user_id
},
ConditionExpression=Attr("project_id").eq(project_id),
UpdateExpression="SET MRR.#group = :group_value",
ExpressionAttributeNames={
"#group": group
},
ExpressionAttributeValues={
":group_value": {}
}
)
dynmoTable.update_item(
Key={
"user_id": user_id
},
ConditionExpression=Attr("project_id").eq(project_id),
UpdateExpression="SET MRR.#group.#subgroup = :sub_value",
ExpressionAttributeNames={
"#group": group,
'#subgroup': sub_type
},
ExpressionAttributeValues={
":sub_value": data
}
)
data = {
"description": "world",
}
if __name__ == "__main__":
update_dynamo(1, 1, "New Category", "Hello", data)
我的问题是这两个更新项是否可以合并为一个
当然,您可以将整个嵌套的“文档”分配给顶级属性,而不需要只分配标量
像这样的方法应该会奏效:
请注意如何将“group”属性设置为Python字典
{subtype: sub_data}
。正如您所期望的,boto3将把这个字典转换成适当的DynamoDB映射属性。您可以在一次更新中设置复杂的嵌套字典、列表,并以这种方式相互嵌套相关问题 更多 >
编程相关推荐