我想用运行python的lambda函数查询我的DynamoDB。
DynamoDB表(名称:试验台):
*user_id(String)PrimaryKey
- status(String)
- destination(String)
我想查询代码中的表。我想让lambda函数返回所有user_id的status属性带有active。
table = dynamodb.Table('Testing-Table')
def lambda_handler(event, context):
response = table.query (
KeyConditionExpression=Key('status').eq('active')
)
for i in response['Items']:
print(i['user_id'],":",i['status'])
#return 'listing results'
我还添加了一个新的索引:
我尝试创建一个表,主键为status,我的代码工作...但是primarykey必须是唯一的,所以当我尝试在我的表中创建一个新项目时,我不能将status再次设置为active。
如有需要,我会在问题中加入更多资料。我将感谢你的帮助。
--编辑-* 只有status是我的表的PrimaryKey时,我的代码才有效。
- 我的问题是 *:是否可以使用statusPartitionKey而不是PrimaryKeyused_id查询DynamoDB表?最重要的是...它是如何做到的?
2条答案
按热度按时间iecba09b1#
我找到了我一直在寻找的东西:
我不得不像这样在代码中添加 IndexName。
以下是结果的图像:
k3bvogb12#
还有一种替代方法可以在不依赖于 partition key 或 sort key 的情况下定位项目。如果您有兴趣了解这些键的功能,可以参考此source.
之前的解决方案使用了table.query函数。但是,此解决方案将使用table.scan函数。有关 * 扫描 * 的更多信息,您可以在此处查阅官方文档。
为了确保完整性,不要忘记包含import语句
from boto3.dynamodb.conditions import Key, Attr
如果您对探索scan函数的各种方法和选项感兴趣,可以参考here提供的文档
另外,请注意