我有一张像这样的桌子:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
WebDriverWait(driver, 120).until(lambda x: "query return 0")
WebDriverWait(driver, 120).until(EC."something to wait for")
我正在尝试对{
"TableName": "example-table",
"AttributeDefinitions": [
{
"AttributeName": "RecordId",
"AttributeType": "S"
},
{
"AttributeName": "UserId",
"AttributeType": "S"
},
{
"AttributeName": "CreatedAt",
"AttributeType": "N"
},
{
"AttributeName": "Version",
"AttributeType": "N"
}
],
"KeySchema": [
{
"AttributeName": "UserId",
"KeyType": "HASH"
},
{
"AttributeName": "CreatedAt",
"KeyType": "RANGE"
}
],
"LocalSecondaryIndexes": [
{
"IndexName": "RecordIdIndex",
"Projection": {
"ProjectionType": "ALL"
},
"KeySchema": [
{
"AttributeName": "UserId",
"KeyType": "HASH"
},
{
"AttributeName": "RecordId",
"KeyType": "RANGE"
}
]
},
{
"IndexName": "VersionIndex",
"Projection": {
"ProjectionType": "KEYS_ONLY"
},
"KeySchema": [
{
"AttributeName": "UserId",
"KeyType": "HASH"
},
{
"AttributeName": "Version",
"KeyType": "RANGE"
}
]
}
],
"ProvisionedThroughput": {
"WriteCapacityUnits": 1,
"ReadCapacityUnits": 1
}
}
属性实施一种乐观锁定,并在Version
上使用条件表达式,如下所示:
PutItem
...其中,"NOT ( UserId = :uid AND Version >= :v )
在每个呼叫中增加一。给定the one example in AWS' documentation与该用例相关的内容(并进行一些手工测试),我的意思是“仅当该用户的文档版本大于或等于时才编写该文档-转到我现在要发送的Version属性。”
但是,我对表达式如何应用于表中的其他文档感到困惑:
:v
/ attribute_exists
将如何影响该计划?