проверьте, существует ли значение в таблице dynamodb, используя Python, и извлеките эту запись

#python #python-3.x #amazon-dynamodb #boto3 #dynamodb-queries

#python #python-3.x #amazon-dynamodb #boto3 #dynamodb-запросы

Вопрос:

Я новичок в Dynamodb и в настоящее время учусь. Я использую python для запроса dynamodb, чтобы получить некоторые записи на основе условия IF.

У меня есть таблица dynamodb cus_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"
  

Ответ №1:

Похоже, вы хотели бы получить customerID заданное token .

Чтобы сделать это с вашим текущим дизайном таблицы, вы хотели бы использовать выражение фильтра, чтобы попросить DynamoDB вернуть все атрибуты, где token равно пользовательскому вводу. Например, вот фрагмент в псевдокоде:

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

  

Нет необходимости сканировать всю базу данных, возвращать ее в ваше приложение, а затем фильтровать результаты в вашем приложении.

Если вы только начинаете работать с DynamoDB, я бы настоятельно рекомендовал веб-сайт DynamoDB Guide. Он отлично объясняет DynamoDB новичкам.

Комментарии:

1. Я также хочу проверить, совпадает ли данный пользователем токен с токеном, существующим в таблице in. Только если токен совпадает, мне нужно получить соответствующий CustomerID

2. Эта операция сканирования вернет только те элементы, в которых токен соответствует тому, что вы запрашиваете (пользовательский ввод). Если совпадения нет, вы не получите результатов. Нет необходимости в дополнительной проверке. По умолчанию операция сканирования вернет все атрибуты в соответствующих элементах, что означает, что в ваших результатах будет указан идентификатор пользователя.