我读到了这个:http://boto.readthedocs.org/en/latest/ref/dynamodb2.html
但我还有几个问题。
在:
results = users.scan(
... age__in=[25, 26, 27, 28, 29],
... limit=1
... )
寻求确认的问题: 1)用户是发电机表。 2)年龄与存储时的数据[“年龄”]类似。所以像这样:
def createSwfInDynamo(key,images,text):
data={}
data["time"]=five
data["age"]=25
newI = swfTable.new_item(id,data["time"], data)
newI.save()
可以使用users.scan扫描。
3)另外__不是对象名称,而是将比较运算符分开。因此,age__in意味着列年龄必须在[25,26,27,28,29]。
4)Limit = 1表示用户只想返回1个匹配项?
5)最后我知道dynamo只返回前1个或1000个对象。如果我想让所有匹配到扫描,我怎么能很好地迭代?
答案 0 :(得分:1)
1)2)是
3)我不知道
4)和5)
假设您的表中有100个项目,并且您想要扫描表格。您可以将限制设置为25并将扫描调用4次。或者您可以将限制设置为1并调用扫描API 100次。在扫描回复中,您应该保存LastEvaluatedKey并将其作为ExclusiveStartKey传递给下一次扫描调用。
例如,如果您的设置限制为25,那么您的扫描结果将包含LastEvaluatedKey,这是DynamoDB服务查找第26项的提示。
示例基于我从here
借来的代码def search(table, scan_filter=None, range_key=None,
attributes_to_get=None,
limit=None):
start_key = None
while True:
results = self.conn.layer1.scan(table_name=table,
attributes_to_get=attributes_to_get,
exclusive_start_key=start_key,
limit=request_limit)
# do stuff with your results
start_key = results['LastEvaluatedKey']
if start_key is None:
break
我建议您现在使用DynamoDB的低级Python API,因为它更类似于Java API,您可以在线获得有关基本API的更多信息。一旦您感觉更舒服,您就可以转向更高级别的API,从而提高您的工作效率。
答案 1 :(得分:0)
users
是表格
"这是正确的年龄"是变量名称
我发现了here。
检查源代码后,似乎将参数拆分为__
。
因此,是的,在这种情况下,结尾是参数/
运算符。
真
@Erben Mo提供的解决方案