首页 > 解决方案 > 使用python检查dynamodb表中是否存在值并获取该记录

问题描述

我是 Dynamodb 的新手,目前正在学习。我正在使用 python 查询 dynamodb 以根据 IF 条件获取一些记录。

我有一个 dynamodb 表cus_token,只有两个属性 a) customerId 和 b) token

令牌表

当用户提供令牌时,检查 cus_token 表中是否存在该令牌,如果存在,我想查询并获取该令牌的 customerID。我试着这样做

假设 user_input = "Rooxp9"(这是 cus_token 表中的一个令牌)

首先获取所有带有token属性的值

import boto3
import json

def gettokens(y):
    dynamodb = boto3.resource('dynamodb')
    table = dynamodb.Table('cus_token')
    response = table.scan()

    tokens = []
    for i in response['Items']:
        nameList.append(i['token'])

    return tokens

temp = gettokens(cus_token)

使用 IF 条件检查

for item in temp:
    if item == user_input:
        "Here I want to write the code to fetch the customerID"

标签: pythonpython-3.xamazon-dynamodbboto3dynamodb-queries

解决方案


听起来您想获取customerID给定的 a token

要对您当前的表设计执行此操作,您需要使用过滤器表达式来要求 DynamoDB 返回token等于用户输入的所有属性。例如,这是一个伪代码片段:

response = table.scan({"FilterExpression": "#token = :token",
                       "ExpressionAttributeNames": {"#token":"token"},
                       "ExpressionAttributeValues": {":token": {"S": <user_input>}})

无需扫描整个数据库,将其返回到您的应用程序,然后在您的应用程序中过滤结果。

如果您刚刚开始使用 DynamoDB,我强烈推荐The DynamoDB Guide website。它在向初学者解释 DynamoDB 方面做得很好。


推荐阅读