如何通过Python词典创建带有许多服装的DynamoDB项目?

时间:2018-07-06 22:41:46

标签: python amazon-dynamodb boto3

我的目标是拥有一个DynamoDB表作为带有多个歌曲项的歌曲目录。每个表Item都将基于在Python3中通过Dictionary数据类型进行迭代而使用Attributes创建。每个属性都应该是基于Python3词典的 key:value 对。一些项目比其他项目具有更多的属性,因为并非所有字典都具有相同数量的键:值对。

例如,我的DynamoDB表中的歌曲项可能包含以下(但不是全部)这些属性:

  • 歌曲标题
  • 艺术家
  • 歌曲长度
  • 文件大小(MB)
  • 类型
  • 比特率
  • 每分钟节拍

我正在使用Mutagen library创建Python字典。

我的挑战是如何分解Python字典,并使每个键:值对成为DynamoDB中Item的独立属性。在Dynamo中将整个Dictionary表示为字符串是相当容易的,但这不是我想要的。

我一直在尝试使用FOR循环遍历我的Dictionary中的值,并使用table.put_item创建具有属性的Item。我相当确定这是错误的,因为在每次迭代中,整个Item只会被循环中最近迭代过的Attribute取代(而不是在Dictionary中拥有一个带有所有属性的完整Item)。

import boto3
from mutagen.easyid3 import EasyID3     

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('audio_metadata')
audioObject = 'SampleAudio_0.7mb.mp3'

audio = EasyID3(audioObject)
audioAttributes = dict(audio.items())

for a, b in audioAttributes.items():
    table.put_item(Item={'audio_object_name' : audioObject,
                     *?????*
                     }
               )

我已经尝试了很多方法,但是肯定缺少一些东西。我希望能朝正确的总体方向作出努力。我很确定FOR循环不是执行此操作的正确方法,但这就是我现在的位置。

谢谢!
安德鲁

My Dynamo Table with attributes getting closer

0 个答案:

没有答案
相关问题