我的目标是拥有一个DynamoDB表作为带有多个歌曲项的歌曲目录。每个表Item都将基于在Python3中通过Dictionary数据类型进行迭代而使用Attributes创建。每个属性都应该是基于Python3词典的 key:value 对。一些项目比其他项目具有更多的属性,因为并非所有字典都具有相同数量的键:值对。
例如,我的DynamoDB表中的歌曲项可能包含以下(但不是全部)这些属性:
我正在使用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循环不是执行此操作的正确方法,但这就是我现在的位置。
谢谢!
安德鲁