использование boto для сканирования таблицы Dynamodb

Ребята, у меня есть таблица «admins» с «UserName» в качестве HashKey. Таблица выглядит так:

admins = Table('admins')
admins.put_item(data={
  'UserName':'jon',
  'password':'pass1',
  })
admins.put_item(data={
  'UserName':'tom',
  'password':'pass2',
  })

Итак, чтобы вытащить пользователей, я пытаюсь сделать следующее, но безуспешно:

admins = Table('admins')
all_admins = admins.scan()
for x in all_admins:
  print x['UserName']

Почему я получаю пустой набор?

Спасибо!


person Cmag    schedule 24.08.2013    source источник


Ответы (2)


То, что вы делаете, выглядит правильно.

Вы подтвердили, что данные действительно были записаны? (взгляните на консоль AWS) Вы пытаетесь читать сразу после записи? Чтение по умолчанию в конечном итоге непротиворечиво, и поэтому вы можете не найти элементы сразу после их записи.

person prestomation    schedule 26.08.2013

Используйте Item= вместо data= для вставки элементов, вы также можете использовать пакетную обработку

admins = Table('admins')
admins.put_item(Item={
               'UserName':'jon',
               'password':'pass1'})
admins.put_item(Item={
               'UserName':'tom',
               'password':'pass2'})

И чтобы вытащить пользователей, вы должны использовать

admins = Table('admins')
all_admins = admins.scan(
             ConsistentRead=True)
items = all_admins['Items']
for x in items:
  print x['UserName']

Это должно сделать работу

person WhiteRabbit    schedule 07.10.2015