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

Die*_*ter 1 python amazon-web-services amazon-dynamodb boto3

最好的事物

目前我在 python 2.7 中使用 Boto3,我想要的是:我的特定 DynamoDB 表的列标题。

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

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

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

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

但是因此,我必须知道,我的表(或结构)中的标题、属性、字段名称是什么 + 问题是,这些列标题是动态的,不能有静态的标题列表而且它可以是,突然间新记录添加了一个唯一的列,(这意味着下一次,我将收到每个 csv 的 81 列)-因此,这些标题知识应该来自我的表/亚马逊 aws

亲切的问候

gar*_*aat 6

您可以通过使用对象的attribute_definitions属性来获取您正在寻找的一些信息Table,如下所示:

import boto3
ddb = boto3.resource('dynamodb')
table = ddb.Table('MyTable')
attrs = table.attribute_definitions
Run Code Online (Sandbox Code Playgroud)

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

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