我有一个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