它不可能在dynamodb中有空字段的打印项目?

时间:2015-05-21 13:44:51

标签: amazon-web-services amazon-dynamodb boto

我有以下代码来扫描我的用户表中的所有项目,然后打印每个项目的名称。

我打印每个项目的字段名称,并且当所有项目都填写了字段名称时,它正常工作。

但是当某些项目没有填写字段名称时,我在打印r["name"]时出错。

错误:key error "name"

你知道为什么我会收到这个错误吗? Dynamodb不要让我们有空场?或者这不是从表中获取所有项目的正确方法吗?

代码:

dynamo = boto.dynamodb.connect_to_region("us-east-1")
table = dynamo.get_table("users")
results = table.scan()
print results
for r in results:
    print r["name"]

1 个答案:

答案 0 :(得分:2)

DynamoDB是一个无模式数据库,因此,除了主键和范围键(如果使用)之外,项目没有必需的属性。 DynamoDB不支持没有价值的属性。因此,如果您实际上没有为项目中的属性存储值,则该项目将不存在该属性。当您检索对象时,该属性将不会存在于返回的项目中。

处理此问题的方法是在尝试访问该项目之前检查该项目是否具有属性:

for r in results:
    if 'name' in r:
        print(r['name'])
    else:
        print('{} has no name'.format(r))