DynamoDB сканирует все элементы, которые соответствуют условию - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть скрипт DynamoDB. Я сканирую предмет, который соответствует определенному условию. Теперь он работает, но для таблиц с большим количеством элементов кажется, что он печатает только некоторые элементы, которые соответствуют, но не все:

dynamodb = boto3.resource('dynamodb', region_name='eu-west-1')
table = dynamodb.Table(table)

# get items
fe = Attr('message').contains(filter)
get_response = table.scan(
    FilterExpression=fe
)

print(get_response)

Но это печатает не все элементы.

1 Ответ

1 голос
/ 02 апреля 2020

Метод сканирования без нумерации страниц (в соответствии с документами ),

Одна операция сканирования считывает до максимального количества установленных элементов (если используется параметр Limit) или максимум 1 МБ данных, а затем применить любую фильтрацию к результатам, используя FilterExpression

Попробуйте использовать scan paginator

dynamodb = boto3.client('dynamodb')
paginator = dynamodb.get_paginator('scan')

response_iterator = paginator.paginate(
    TableName=table,
    FilterExpression='Message = :filter',
    ExpressionAttributeValues={
        ":filter": {
            "S": "some filter"
        }
    }
)

for response in response_iterator:
    print(response)

FilterExpression и ExpressionAttributeValues будут зависеть от того, что вы ищете. проверьте документы для более подробной информации

...