【问题标题】:Checking if primary key is existing in dynamodb or not检查 dynamodb 中是否存在主键
【发布时间】:2021-09-29 12:49:08
【问题描述】:

我有一个 dynamodb 表,其中的列是 url 和 organization_name url 是主键。当我尝试使用新数据更新表时,如何检查表中是否已存在 URL。我正在使用 python boto3 来更新表格。

我使用下面的代码进行检查

       trans = {}
       trans['url'] = URL
       trans['html_data'] = data
       trans['organization_name'] = org_name
       try:
            table.put_item(Item=trans,ConditionExpression='attribute_not_exists(url)')
       except:
            mesg = 'Data Insertion Not Successfull'
       mesg = 'Data Saved Successfully'

如果 url 不存在,这是将数据写入表的正确方法吗?

【问题讨论】:

    标签: python amazon-dynamodb boto3


    【解决方案1】:

    这就是条件表达式的用途!

    这是使用 NodeJS API 的外观:

    const ddb = new AWS.DynamoDB()
    
    ddb.putItem({
      TableName: "...",
      Item: {
        url: {S: "https://stackoverflow.com"},
        organization_name: {S: "my org"},
        other_stuff: {S: "...stuff"}
      },
      ConditionExpression: "attribute_not_exists(url)"
    })
    

    如果 url 存在,则 put 语句将失败,即仅当该表中不存在具有该 url 的项目时才会起作用。并且puts始终是一致的(直到存储节点达成共识才报告写入OK)。

    完整文档在这里:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ConditionExpressions.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-04
      相关资源
      最近更新 更多