Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 无法使用boto3从DynamoDB StringSet中删除项_Python 3.x_Amazon Web Services_Amazon Dynamodb_Boto3 - Fatal编程技术网

Python 3.x 无法使用boto3从DynamoDB StringSet中删除项

Python 3.x 无法使用boto3从DynamoDB StringSet中删除项,python-3.x,amazon-web-services,amazon-dynamodb,boto3,Python 3.x,Amazon Web Services,Amazon Dynamodb,Boto3,我有一个包含StringSet类型属性的表。属性名称为allDevices。我正在尝试从StringSet中删除设备id。但是,当我运行下面的代码时,它不会从StringSet中删除字符串。它也不会抛出任何错误。当尝试删除设备IDfakeID1时,响应为: {'Attributes':{'allDevices':{'fakeID1','fakeID2'},'ResponseMetadata':{'RequestId':'','HTTPStatusCode':200,'HTTPHeaders':

我有一个包含StringSet类型属性的表。属性名称为
allDevices
。我正在尝试从StringSet中删除设备id。但是,当我运行下面的代码时,它不会从StringSet中删除字符串。它也不会抛出任何错误。当尝试删除设备ID
fakeID1
时,响应为:


{'Attributes':{'allDevices':{'fakeID1','fakeID2'},'ResponseMetadata':{'RequestId':'','HTTPStatusCode':200,'HTTPHeaders':{'server':'server','date':'Fri,2019年2月22日09:04:52 GMT','content type':'application/x-amz-json-1.0','content length':'93','connection':'keep alive','x-amzn-RequestId':'','x-amz-crc32':',“RetryAttempts”:0}
您只需要对ExpressionAttribute值做一个小的修改。要将单个字符串转换为一个集合,必须首先将其设置为列表

ExpressionAttributeValues={
    ':s': set([deviceID]),
}
请注意,将变量放入[]以使其成为列表与不放入[]之间的区别

>>> deviceID = "WB529"
>>> set(deviceID)
set(['9', '2', 'B', '5', 'W'])
>>> set([deviceID])
set(['WB529'])
此删除操作将指示其成功,并返回“更新”属性,即使未进行任何更改。我有一些非常相似的代码;从响应中无法判断您是从stringset中删除了一个元素,还是从一开始就不存在该元素


我还没有尝试过,但我相信添加一个ConditionExpression会给你反馈(该操作要么成功,要么抛出异常)。

你知道这一点吗?我也有同样的问题