gpt4 book ai didi

python-3.x - 如何使用 DICT 数据类型 (boto3) 更新 DynamoDB 表

转载 作者:行者123 更新时间:2023-12-04 20:28:26 25 4
gpt4 key购买 nike

我创建了一个用于存储元数据的 DynamoDB 表,对于不同类型的数据具有不同的属性(文件大小、日期等,作为单独的属性)。

我正在尝试使用 Python3 字典并将其用作需要上传到表的一堆属性的源。到目前为止,我已经能够将整个字典作为一个属性成功上传,但我希望每个键:值对在数据库中都是它自己的属性。换句话说,Python3 字典中的每个键:值对最终都应该在 DynamoDB 表中作为自己的键:值对。我知道我下面的代码到目前为止还没有设计成那样。

到目前为止,这是我的代码:

file_attributes = dict(file.items())

# Add all metadata to DynamoDB:
response = table.update_item(
UpdateExpression="set File_attributes = :f,"
Key={
'file_name': key,
},
ExpressionAttributeValues={
':f': file_attributes,

},
ReturnValues="UPDATED_NEW"
)

最佳答案

我认为您正在寻找以下方面的内容:

update_expression = 'SET {}'.format(','.join(f'#{k}=:{k}' for k in file))
expression_attribute_values = {f':{k}': v for k, v in file.items()}
expression_attribute_names = {f'#{k}': k for k in file}

response = table.update_item(
Key={
'file_name': key,
},
UpdateExpression=update_expression,
ExpressionAttributeValues=expression_attribute_values,
ExpressionAttributeNames=expression_attribute_names,
ReturnValues='UPDATED_NEW',
)

我修改了您的示例以使用 ExpressionAttributeValues 和 ExpressionAttributeNames 动态生成更新表达式。需要使用别名,因为我们不知道 file 里面的项目的名称是什么。字典。生成的更新表达式将包含 file 中每个顶级键的 set 语句字典。属性名称以 # 为前缀符号,并且属性值以 : 为前缀标志。

关于python-3.x - 如何使用 DICT 数据类型 (boto3) 更新 DynamoDB 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52367094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com