繁体   English   中英

检查dynamodb中是否存在主键

[英]Checking if primary key is existing in dynamodb or not

我有一个 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 不存在,这是将数据写入表的正确方法吗?

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

这是使用 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM