Home Articles

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

Asked
Viewed 464 times
0

最好

此时我在python 2.7中使用Boto3,我想要的是:我的特定DynamoDB表的列 Headers .

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

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

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

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

但是,我要知道, Headers ,属性,字段名称来自我的表(或结构)是什么东西,那些列 Headers 是动态的,不能有 Headers 的静态列表它可以是,突然新的记录添加了一个唯一的列,(这意味着下一次,我会收到81列我的每个csv) - 因此这些 Headers 知识应来自我的表/亚马逊aws

亲切的问候

1 Answer

  • 2

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

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

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

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

Related