Python 3.x KeyConditionExpression接受无效输入,不引发异常

Python 3.x KeyConditionExpression接受无效输入,不引发异常,python-3.x,error-handling,amazon-dynamodb,boto3,Python 3.x,Error Handling,Amazon Dynamodb,Boto3,我是DynamoDB的新手,试图通过它的文档以及boto3获得动力 我已经编写了一些代码,用来查询几个不同参数的表并进行一些计算。它可以工作,但是我还没有实现错误处理。 我注意到,当我在.eq(customerName)中通过一个无效的customerName时,它不会抛出任何相关错误,只会继续进行进一步的计算,这显然会失败。 然而,若我将密钥从“CustomerName”更改为随机值,它将检测到这一点。 如何检查通过输入输入的customerName是否存在,如果不存在,则抛出错误?这次尝试没

我是DynamoDB的新手,试图通过它的文档以及boto3获得动力 我已经编写了一些代码,用来查询几个不同参数的表并进行一些计算。它可以工作,但是我还没有实现错误处理。 我注意到,当我在.eq(customerName)中通过一个无效的customerName时,它不会抛出任何相关错误,只会继续进行进一步的计算,这显然会失败。 然而,若我将密钥从“CustomerName”更改为随机值,它将检测到这一点。 如何检查通过输入输入的customerName是否存在,如果不存在,则抛出错误?这次尝试没有成功。我遇到了属性_not_存在,它在逻辑上与我试图实现的类似,但它不需要关键点

    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)

在键条件表达式中使用无效键名进行查询会引发异常,因为这是一个无意义的查询

查询不存在的键值并不是一个错误——对于可能遇到的任何数据库都是如此。数据库没有任何依据可以得出值“错误”的结论,因为对于一个根本找不到的值来说,这并不是一个有意义的概念


response['Items']
包含匹配项集。如果未找到任何记录,则它没有项目。如果没有发现的记录是意外的,你应该检查这个条件。

在查询之前,你如何检查客户名称是不存在的?如果客户名称不存在,为什么它是错误的?这没有错。如果对列值进行了索引,则可以更快地检查值的存在性,但在查询之前,您无法知道它是否存在。