0
正如我在Complete scan of dynamoDb with boto3中所解释的那样,我构建了一个解决方案,使用某种条件对DynamoDB表进行全面扫描。这是我的代码:DynamoDB扫描中的无限循环
def dynamo_scan(table_name, params_dict):
dynamo_table = boto3.resource('dynamodb').Table(table_name)
response = do_scan(dynamo_table, params_dict)
results = response['Items']
while response.get('LastEvaluatedKey'):
print "Iterating"
print response.get('LastEvaluatedKey')
params_dict['ExclusiveStartKey'] = response['LastEvaluatedKey']
response = do_scan(dynamo_table, params_dict)
results.extend(response['Items'])
return results
def do_scan(dynamo_table, params_dict):
return dynamo_table.scan(**params_dict)
但是,当代码执行时,它会进入无限循环。这是LastEvaluatedKey的每次迭代的输出:
{u'my_id': u'1698', u'identity': u'2017075002312'}
{u'my_id': u'1883', u'identity': u'85500397082900013318629'}
{u'my_id': u'1698', u'identity': u'2017075002312'}
{u'my_id': u'1883', u'identity': u'85500397082900013318629'}
{u'my_id': u'1698', u'identity': u'2017075002312'}
{u'my_id': u'1883', u'identity': u'85500397082900013318629'}
而且它通过这两对继续循环。
编辑:
我添加了方法do_scan。
是的,我说我的方法do_scan。我认为和你的解决方案是一样的,但我每次都陷入无限循环。 –
数据库中有多少数据? – Lexxxxx