如何在Python中为DynamoDB UpdateExpression传入变量名
解决DynamoDB UpdateExpression文档路径无效的问题
直接将变量file拼接进UpdateExpression会触发ValidationException,核心原因是如果file的值包含特殊字符(比如点.、空格、DynamoDB关键字),会被判定为无效的文档路径。正确的做法是使用ExpressionAttributeNames安全映射属性名,避免直接拼接。
修改后的代码如下:
response = table.update_item( Key={"runid": item["runid"]}, UpdateExpression="SET #file_attr = :val1, update_date = :val2", ExpressionAttributeNames={ "#file_attr": file # 用占位符映射变量file对应的属性名 }, ExpressionAttributeValues={ ":val1": item[file], ":val2": item["update_date"], } )
关键说明:
- 用
#file_attr作为属性名的占位符,替代直接拼接file变量 - 在
ExpressionAttributeNames字典中,将占位符和实际的属性名(即file变量的值)绑定 - 这种方式兼容所有合法的属性名,包括带特殊字符或关键字的情况
内容的提问来源于stack exchange,提问作者Neethu Lalitha
相关产品推荐
相关产品推荐

