如何在Python Lambda中实现大小写不敏感的DynamoDB查询
解决方案
因为你的DynamoDB表中属性值均为大写,而输入参数i可能是任意大小写组合,只需将输入参数统一转换为大写,再配合Scan操作(你提到需要扫描操作,原代码用的是query,这里替换为scan)即可实现匹配:
import boto3 from boto3.dynamodb.conditions import Attr dynamodb = boto3.resource('dynamodb') table = dynamodb.Table('Plant1') i = "it" # 这里可以是任意大小写组合的输入 # 将输入参数转换为大写,与表中数据格式统一 i_upper = i.upper() # 执行Scan操作,使用转换后的大写参数进行匹配 response = table.scan( FilterExpression=Attr('PLANT_ID').contains(i_upper) | Attr('CTRY_CD').contains(i_upper) ) items = response['Items'] return items
关键说明:
- 大小写统一:通过
i.upper()将输入的任意大小写字符串转为大写,确保和表中存储的大写属性值匹配,避免因大小写差异导致的匹配失败。 - 替换为Scan操作:原代码使用的
query是针对主键/索引的查询操作,而你需要的是全表扫描,因此改用table.scan()方法。
内容的提问来源于stack exchange,提问作者Buddhadeb
相关产品推荐
相关产品推荐

