Python 如何使用boto3删除dynamodb中的所有项目

Python 如何使用boto3删除dynamodb中的所有项目,python,amazon-web-services,aws-lambda,boto3,Python,Amazon Web Services,Aws Lambda,Boto3,下面是我的代码,用于从表名详细信息 下面的代码将根据正常工作的dynamodb的容量删除一些项目 如何删除所有项目 我使用编写,而使用标志条件循环 import boto3 def lambda_handler(event, context): try: flag = False table_name = 'details' dynamodb = boto3.resource('dynamo

下面是我的代码,用于从表名详细信息

  • 下面的代码将根据正常工作的dynamodb的
    容量
    删除一些项目
  • 如何删除所有项目
我使用
编写,而
使用标志条件循环

   import boto3
    def lambda_handler(event, context):
        try:
            flag = False
            table_name = 'details'
            dynamodb = boto3.resource('dynamodb')
            table = dynamodb.Table(table_name)
            scan = table.scan()
            while True:
                with table.batch_writer() as batch:
                    for each in scan['Items']:
                        if each is not None:
                            batch.delete_item(
                                 Key={
                                 'id': each['id']
                                 }
                             )
                         else:
                            Flag = True
        except Exception as e:
           print (e)


对于DynamoDB,如果要删除所有项目,最好的方法是删除并重新创建表,因为使用bot3,每页的元素限制为1000个

boto3的问题是成本太高。。。每次删除都是写请求。如果您不想支付不必要的费用(这是最好的方式),请删除并重新创建:)

顺便说一下

import boto3
    def lambda_handler(event, context):
        try:
            flag = False
            table_name = 'details'
            dynamodb = boto3.resource('dynamodb')
            table = dynamodb.Table(table_name)
            scan = table.scan()
            while !flag:
                with table.batch_writer() as batch:
                    for each in scan['Items']:
                        batch.delete_item(
                                 Key={
                                 'id': each['id']
                                 }
                             )
                    flag = True
        except Exception as e:
           print (e)


问题是什么?在第二个代码示例中,在哪里打破while循环?我还希望您也需要提交批处理,但我不知道这个界面。如果您的工作流程允许,您最好删除表并重新创建它,尤其是较大的表。@balderman如何删除dynamo db表中的所有项目,请检查第二个代码。第二个问题是什么code@E.J.Brennan我没有权限,你能检查第二个代码吗?这里面有什么问题吗?你能检查我的第二个代码并帮我找出代码中的错误吗?我没有权力删除我们的表格,却永远不会停止。。。while True:-->while flag:您需要确定标志何时为false。。。当你完成foreach,但我坚持如果你需要删除所有项目,请删除并重新创建。。。你付了不必要的钱。。。或者创建一个地形模板来创建和删除,这是最好的标准我编辑了我的答案我认为可以解决你的问题。。。但请阅读我的其他评论
import boto3
    def lambda_handler(event, context):
        try:
            flag = False
            table_name = 'details'
            dynamodb = boto3.resource('dynamodb')
            table = dynamodb.Table(table_name)
            scan = table.scan()
            while !flag:
                with table.batch_writer() as batch:
                    for each in scan['Items']:
                        batch.delete_item(
                                 Key={
                                 'id': each['id']
                                 }
                             )
                    flag = True
        except Exception as e:
           print (e)