2017-02-01 11 views
0

Я действительно новичок в dynamoDB, поэтому вопрос может быть очень глупым. Моя цель и код очень просты:Ошибка кода при чтении результатов, возвращаемых таблицей DianmoDb table.scan() в python

  1. Я подключаюсь к DynamoDB.
  2. я получить желаемую Таблицу назад от dynamoDB
  3. Я прочитал все значения с помощью Table.scan()
  4. но когда я пытаюсь запустить цикл на возвращенном результирующем, полученном на стадии 3 вместо переборе resulset я не со следующими ошибка: TypeError: объект 'Resultset' не имеет атрибута '__getitem__'

Вот мой код:

 def fireQuery(tableName): 
     table = getTable(tableName) 
     try : 
       result = table.scan(Select="ALL_ATTRIBUTES") 
       for item in result['Items'] : #<-- my code fails here 
        print(item) 

    def getTable(tableName): 
     try: 
       db = getDynamoDBConnection() 
       table = Table(tableName, connection=db)   
     except Exception as e: 
       print(tableName ," Table doesn't exist.", e) 
     return table 

Исключение на консоли:

для элемента пользователей [ 'С']:

TypeError: объект 'Resultset' не имеет атрибута '__getitem__'

ответ

0

Вы просто необходимо переименовать ResultSet следующим образом:

def fireQuery(tableName): 
    table = getTable(tableName) 
    try : 
     result_set = table.scan(Select="ALL_ATTRIBUTES") 
     for item in result_set: 
      print item['attributename'] 
+0

Я пробовал, что вы help, у меня есть __getitem__, определенный для result_object, но если я использую *** table.scan (select = "ALL_ATTRIBUTES") ***, я получаю эту ошибку: *** UnknownFilterTypeError ("Operator 'Select' from 'Select' is не распознано. ",) *** и для *** table.scan() ***, я получаю эту ошибку: *** JSONResponseError: 400 Bad Request {u'message ': u'Requested resource not found ', u' __ type ': u'com.amazonaws.dynamodb.v20120810 # ResourceNotFoundException'} *** – adityagerrard