KeyConditionExpression принимает неверный ввод и не выдает исключение - PullRequest
0 голосов
/ 25 сентября 2019

Я новичок в DynamoDB и пытаюсь проработать его документацию, а также boto3. Я написал некоторый код, который должен запрашивать несколько таблиц для различных параметров и выполнять некоторые вычисления.Это работает, однако я еще не реализовал обработку ошибок.Что я заметил, так это то, что когда я пропускаю неверное customerName в .eq (customerName), он не выдает никаких связанных ошибок и просто переходит к дальнейшим вычислениям, которые, очевидно, потерпят неудачу.Однако, если я поменяю Key с «CustomerName» на что-то случайное, он обнаружит это.Как проверить, что customerName, введенное через ввод, существует, и если нет, выдать ошибку?Эта попытка - кроме как не уловить.Я столкнулся с attribute_not_exists, которое логически похоже на то, что я пытаюсь достичь, но не требует ключей.

    try:
        response = table.query(
            KeyConditionExpression=Key('customerName').eq(customerName),
            ProjectionExpression='price',
            )

            # some code

    except ClientError as err:
        logger.info(f"The customer {customerName} doesn't exist: {err}")
        sys.exit(1)

1 Ответ

0 голосов
/ 26 сентября 2019

Запрос с неверным именем ключа в выражении условия ключа вызывает исключение, потому что это бессмысленный запрос.

Запрос о несуществующем значении ключа не является ошибкой - это верно практически для любой базы данных, которой вы являетесьскорее всего, столкнуться.В базе данных нет ничего, на чем можно было бы сделать вывод, что значение является «неправильным», потому что это не совсем значимое понятие в отношении значения, которое просто не найдено.

response['Items'] содержит набориз соответствующих предметов.Если записи не найдены, у него нет элементов.Вам следует проверить это условие, если не найдено записей, которые вы считаете неожиданными.

...