Python / Boto3:不支持浮点类型。使用 Decimal 类型代替

Gar*_*ead 29 python amazon-dynamodb boto3

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

Float types are not supported. Use Decimal types instead.
Run Code Online (Sandbox Code Playgroud)

我的代码:

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)
Run Code Online (Sandbox Code Playgroud)

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

预先感谢您的任何帮助。

小智 49

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

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

table.put_item(
    Item=item
)
Run Code Online (Sandbox Code Playgroud)

  • 这似乎与原始帖子中的代码没有任何不同。 (2认同)

小智 8

遇到了同样的问题,结果发现 Python 将字符串参数作为其他参数传递。当我将所有项目包装在 str() 中时,问题就消失了。

  • 您应该尽可能保留这些类型。检查 MS R 的解决方案 (3认同)