AWS DynamoDB - Boto3从dynamoDB表/结构中获取所有属性,字段名,列标题

时间:2016-11-16 14:14:01

标签: python amazon-web-services amazon-dynamodb boto3

最佳

此时我在python 2.7中使用Boto3,我想拥有的是: 我的特定DynamoDB表的列标题。

此时,我正在处理一个非常大的dynamoDB表,包含80列和+ 1.00O.000条记录。我所做的任务就是操纵这些数据。要做到这一点,我正在利用块。这意味着我每次从我的数据表中检索1000行并操纵它们并将新结果写入csv。 (由于某些原因,这是必需的。)

但是因为我正在使用块,所以不是每个块都包含80列,这意味着它有时可以包含79或78列。如果块中的特定列没有可用值,则会发生这种情况。

这是不可取的,因为在一天结束时,所有这些csv应该再次连接在一起,因此,每个csv应该包含相同数量的列。

因此,我的想法是:将空列添加到不包含所有必需列的chunk-csv。

但是,我要知道,标题,属性,字段名称来自我的表(或结构)+事情是,那些列标题是动态的,不能有标题的静态列表并且它可以突然添加一个新的记录列,(这意味着下一次,我将为每个csv收到81列) - 因此这些标题知识应该来自我的表/ amazon aws

亲切的问候

1 个答案:

答案 0 :(得分:2)

您可以使用attribute_definitions对象的Table属性获取您要查找的部分信息,如下所示:

import boto3
ddb = boto3.resource('dynamodb')
table = ddb.Table('MyTable')
attrs = table.attribute_definitions

变量attrs现在将包含您在创建表时显式定义的所有属性的字典,该表通常只是在某个索引中用作键的属性。

但是,由于DynamoDB的架构较少,因此您可以在DynamoDB中的项目中存储其他任何属性的任意组合。因此,正如上面的评论所述,了解所有项目中使用的所有属性的唯一方法是遍历所有项目并构建在每个项目中找到的一组属性。