2

我正在尝试使用 boto 检查 dynamodb 中是否存在 hash_key(如果存在,我无法更新我的文件)我尝试使用查询

   for i in self.table.query(hask_key=[value]):
      print i['url']

但我错过了一个论点(???)。我尝试过扫描,但我需要检查我的 hash_key,而不是属性。

我尝试使用 get_item 但如果 hash_key 不存在,我无法管理响应。

有什么建议吗?

我玩过redis,它有exist 方法。

4

2 回答 2

6

与其进行查询操作,不如尝试使用get_item. 如果存在,该项目将被退回。如果没有,呼叫将引发DynamoDBKeyNotFoundError您可以接住的 a。所以,像:

def exists(hash_key):
    try:
        item = self.table.get_item(hash_key=<hash key>...)
    except boto.dynamodb.exceptions.DynamoDBKeyNotFoundError:
        item = None
    return item

如果哈希不存在,将返回 None ,如果它确实存在,则返回该项目。

于 2013-04-03T11:36:12.993 回答
4

谷歌搜索后刚刚结束了这个页面。这是2020年的更新:

API 行为已更改并返回“项目”或“”,但不会引发异常: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb。 html#DynamoDB.Client.get_item

以下是如何使用 get_item 查询单个项目的示例: https ://boto3.amazonaws.com/v1/documentation/api/latest/guide/dynamodb.html#getting-an-item

这个 SOF 答案解决了检查 DDB 表中是否存在项目的具体问题: https ://stackoverflow.com/a/48589589/512155

于 2020-03-07T22:12:48.093 回答