检查客户是否在 DynamoDB table

Check if customer is in the DynamoDB table

我写了一些查询 table 的代码。现在我正在向它添加例外。 我是 Python 和 DynamoDB 的新手,所以进展缓慢而且方向不一定正确。 我被困在检查通过 input() 输入的客户名称是否存在于 table 中的部分。

        customer_name = input("Enter name:")
        try:
            response = table.get_item(
                TableName=table_name, Key={'customer': {'S': str(customer_name)}}
                )

        except ClientError:
            logger.info(f'The customer is not found.')
        else:
            response = table.query(
         # some code
            )

它一直 returning 客户不存在。我不明白为什么。有没有更好的方法来检查客户是否在 table 中? 每个客户名称下的条目很少,因此理想情况下它应该搜索直到找到第一条记录并且 return 它存在,但我不知道如何实现这个 =(

感谢您的帮助!

由于您写道每个客户名称下都有一些条目,因此您应该了解 dynamoDB 表的构建方式以及 getItem 查询的工作方式。

简而言之:你只能通过它的主键来获取一个项目,并且这个主键必须是唯一的(突出你错的地方)。

现在有一些变通办法,因为主键可以由分区键和排序键组成,使用它们可以搜索直到找到具有特定客户名称的第一条记录。

不过,作为初学者,我建议您只为每个客户输入一个条目,并通过其姓名查询您的客户。如果您想进行高级阅读,请阅读不同类型的键以及本地和全局二级索引。