检查dynamodb中是否存在主键



我有一个dynamodb表,其中的列是url和organization_nameUrl是主键。如何检查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不存在的情况下工作。put总是一致的(写入直到存储节点达成一致才会报告OK)。

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

相关内容

最新更新