如何从 dynamodb 列表中删除项目

2024-01-06

  • 要删除的值列表 = [1,2,3]
  • 来自 dynamodb 的 myList = [1,2,3,4,5,6,7]
  • 我是否需要循环每个项目找到索引并删除
  • 有没有更好的办法
  • 通过链接已过在 DynamoDB 表项目的列表类型属性中添加或删除条目 https://stackoverflow.com/questions/28258682/add-or-remove-an-entry-from-a-list-type-attribute-in-a-dynamodb-table-item
import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('myowntable')
response = []
response_table = table.get_item(Key={'id': '19'})
        if 'Item' in response_table and response_table['Item']:
            response.append(response_table['Item'])

listofvalues = [1,2,3]
for i in listofvalues:
    id_index_delete = str(response[0]['myList'].index(i))
    query = "REMOVE myList[" + id_index_delete + "]"
    table.update_item(
                    Key={
                        'id': '19'
                    },
                    UpdateExpression=query
                )


You can 删除多个项目 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html#Expressions.UpdateExpressions.REMOVE从具有更新表达式的单个操作中的列表中,例如REMOVE myList[0], myList[2]。这是使用 boto3 执行此操作的一种方法:

id = 'a1'
response_table = table.get_item(Key={'id': id})
response = response_table.get('Item', {}).get('myList', [])
listofvalues = [1,2,3] # remove these items from myList

items_to_remove = [f'myList[{response.index(x)}]' for x in listofvalues if x in response ]
query = "REMOVE " +  ", ".join(items_to_remove)

if len(items_to_remove):
  table.update_item(Key={'id': id}, UpdateExpression=query)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 dynamodb 列表中删除项目 的相关文章

随机推荐