2017-01-01 115 views
0

我遇到了定义AWS Dynamodb的查询表达式的问题。 目标是获得包含字符串“1475413345”的字段timeStamp的唯一dynamodb记录。我已确认可以使用相同的字符串通过AWS Web控制台检索此文件。AWS Boto3 Dynamodb查询问题

我怀疑我的.contains的语法不正确。

任何援助非常感谢!

这里是代码:

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

为什么包含而不是eq? – jarmod

+0

我试过.eq和相同的问题。我以为我需要使用.contains,因为它是一个字符串。 – Neal

+0

这是我尝试使用.eqKeyConditionExpression = Key('primaryKey')。eq('76fe48e3-88a0-11e6-9479-556298790684') – Neal

回答

1

KeyConditionExpressions可以仅限制主(分区和排序)表中的键/指数。如果timeStamp不是主键,则可以使用FilterExpression筛选与您要查找的时间戳前缀不匹配的键。