2017-01-01 6 views
0

У меня возникли вопросы, определяющие выражение Query для AWS Dynamodb. Цель состоит в том, чтобы получить уникальную запись dynamodb, которая имеет поле timeStamp, которое содержит строку «1475413345». Я подтвердил, что могу получить это через веб-консоль AWS, используя ту же строку.AWS Boto3 Dynamodb Query Issue

Я подозреваю, что у меня проблема с синтаксисом для .contains wrong.

Любая помощь очень ценится!

Вот код:

import boto3 
from boto3.dynamodb.conditions import Key, Attr 

from time import sleep 

benchtemp = boto3.resource('dynamodb') # if set in ~/.boto 
table = benchtemp.Table('benchtemp') 

temps = table.query(
    KeyConditionExpression=Key('timeStamp').contains('1475413345') 
) 


for temp in temps: 
    print temp; 
    time.sleep(1) 

Вот сообщение об ошибке я получаю:

Traceback (most recent call last): 
    File "/Users/neal/PycharmProjects/Read-NMT-DB/Read-NMT-DB.py", line 15, in <module> 
    KeyConditionExpression=Key('timeStamp').contains('1475413345') 
AttributeError: 'Key' object has no attribute 'contains' 

Process finished with exit code 1 
+0

Почему содержит, а не экв? – jarmod

+0

Я пробовал .eq и та же проблема. Я думал, что мне нужно использовать .contains, поскольку это строка. – Neal

+0

Это команда, которую я пробовал с помощью .eqKeyConditionExpression = Key ('primaryKey'). Eq ('76fe48e3-88a0-11e6-9479-556298790684') – Neal

ответ

1

KeyConditionExpressions может только ограничить первичный (раздел и сортировки) ключи таблицы/индекс. Если timeStamp не является первичным ключом, вы можете использовать FilterExpression, чтобы отфильтровать ключи, которые не соответствуют префиксу timestamp, который вы ищете.

 Смежные вопросы

  • Нет связанных вопросов^_^