boto.dynamodb2 是否支持存储字典的字典?

Does boto.dynamodb2 support storing a dict of dicts?

解决方法:更新到全新的boto 2.35.2解决了问题。


如何使用 boto 在 DynamoDB 中存储一个字典?

我一直在尝试的直截了当的方法似乎并不奏效。尝试保存以这种方式定义的项目:

data = {
    'id': '123456',
    'foo': {'hello': 'world'}
}

item = Item(my_table, data=data)
item.save(overwrite=True)

生成此异常:

TypeError: Unsupported type "<type 'dict'>" for value "{'hello': 'world'}"

我在网上看到 conflicting information 是否支持此功能。我无法让它工作;我正在使用 boto 2.35.1.


这是一个演示问题的完整示例:

import boto.dynamodb2
from boto.dynamodb2.fields import HashKey
from boto.dynamodb2.table import Table
from boto.dynamodb2.items import Item

conn = boto.dynamodb2.connect_to_region('us-east-1')

my_table = Table.create('my_table',
                        connection=conn,
                        schema=[
                            HashKey('id')
                        ])

my_table = Table('my_table')

data = {
    'id': '123456',
    'foo': {'hello': 'world'}
}

item = Item(my_table, data=data)
item.save(overwrite=True)

DynamoDB API 现在支持映射和列表对象:

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataFormat.html

最后一个 boto 版本的接缝(昨天我回答的时候)也添加了这个:

http://boto.readthedocs.org/en/latest/releasenotes/v2.35.2.html

但我个人还没有玩过。