PynamoDB - Как использовать сканирование (attribute_to_get = [...]) - PullRequest
0 голосов
/ 07 июня 2019

Я использую pynamodb==3.3.3 для сканирования элементов с условием attributes_to_get, но получаю исключение, которое не могу решить:

  File "/Users/user/Documents/project/script.py", line 250, in filter_writable_snapshots
    existing_snapshots = ItemSnapshot.scan(attributes_to_get=['id'])
  File "/Users/user/Documents/project/venv/lib/python3.7/site-packages/pynamodb/models.py", line 790, in scan
    filters=filters
  File "/Users/users/Documents/project/venv/lib/python3.7/site-packages/pynamodb/models.py", line 1050, in _build_filters
    raise ValueError("Attribute {0} specified for filter does not exist.".format(attr_name))
ValueError: Attribute attributes_to_get specified for filter does not exist.

У модели есть поле id.

from pynamodb.models import Model
from pynamodb.attributes import UnicodeAttribute

class ItemSnapshot(Model):
    class Meta:
        table_name = 'my_table'

    id = UnicodeAttribute(hash_key=True)
    other_field = UnicodeAttribute()

Я пытаюсь загрузить только поле id.

existing_snapshots = ItemSnapshot.scan(attributes_to_get=['id'])

Я что-то здесь не так делаю или почему происходит сбой запроса?Эта трассировка выглядит так, как будто она пытается найти атрибут attributes_to_get, который не имеет для меня никакого смысла.

Я уже проверяю, что атрибут класса id существует .

1 Ответ

1 голос
/ 14 июня 2019

Метод .scan() не имеет параметра attributes_to_get.Это доступно для .query() и .rate_limited_scan() методов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...