簡體   English   中英

使用Lambda查詢不具有PrimaryKey的DynamoDB

[英]Querying DynamoDB without PrimaryKey with Lambda

我想用運行python的lambda函數查詢DynamoDB。

DynamoDB表(名稱:Testing-Table):

  • USER_ID(字符串) 的PrimaryKey
  • 狀態(字符串)
  • 目標(字符串)

我想查詢代碼中的表。 我希望lambda函數向我返回所有具有status屬性為activeuser_id

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'

我還添加了一個新索引: 索引

我嘗試創建一個以狀態為主鍵的表,並且我的代碼可以工作...但是主鍵必須是唯一的,因此當我嘗試在表中創建新項目時,無法再次將狀態設置為活動狀態

如有必要,我將向該問題添加更多信息。 我會感謝您的幫助。

- 編輯 - 只有 狀態為表的主鍵時,我的代碼才起作用。

我的問題是 :我可以使用狀態 PartitionKey而不是PrimaryKey used_id查詢我的DynamoDB表嗎? 最重要的是...如何完成?

我找到了想要的東西:

我必須像這樣在我的代碼中添加IndexName

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('Testing-Table')

def lambda_handler(event, context):

response = table.query (
    IndexName='status-index',
    KeyConditionExpression=Key('status').eq('active')
)

for i in response['Items']:
    print(i['user_id'],":",i['status'])

這是結果的圖像:

結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM