Python / Boto3:不支持浮点类型。改为使用 Decimal 类型

Python / Boto3: Float types are not supported. Use Decimal types instead

我正在使用 Python 3.7 将数据存储在 DynamoDB 数据库中,当我尝试将项目写入数据库时​​遇到以下错误消息:

Float types are not supported. Use Decimal types instead.

我的代码:

ddb_table = my_client.Table(table_name)

with ddb_table.batch_writer() as batch:
    for item in items:
        item_to_put: dict = json.loads(json.dumps(item), parse_float=Decimal)

        # Send record to database.
        batch.put_item(Item=item_to_put)

“项目”是 Python 字典的列表。如果我打印出“item_to_put”字典的类型,它们都是类型 str.

在此先感谢您的帮助。

运行 进入同一个问题,结果是 Python 将字符串参数作为其他参数传递。当我将所有项目包装在 str() 中时,问题就消失了。

同样的问题。在我的例子中,这是因为我的一些记录没有特定的键,并且默认情况下该键是 auto-added 和 nan(我猜?)。我添加了一些简单的逻辑来检查该键是否是一个列表,如果不是在 运行 batch.put_item 之前将其设置为一个空列表,这似乎已经满足了 Dynamo 野兽。

将所有浮点数转换为十进制

import json
from decimal import Decimal
item = json.loads(json.dumps(item), parse_float=Decimal)

table.put_item(
    Item=item
)