我使用 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)
“items”是 Python 字典的列表。如果我打印出“item_to_put”字典的类型,它们都是 str 类型。
预先感谢您的帮助。
将所有浮点数转换为小数
import json
from decimal import Decimal
item = json.loads(json.dumps(item), parse_float=Decimal)
table.put_item(
Item=item
)
遇到了同样的问题,结果发现 Python 将字符串参数作为其他参数传递。当我将所有项目包装在 str() 中时,问题就消失了。
这里同样的问题。就我而言,这是因为我的一些记录没有特定的密钥,并且默认情况下该密钥是用 nan 自动添加的(我猜?)。我添加了一些简单的逻辑来检查该键是否是一个列表,如果不是,则在运行
batch.put_item
之前将其设置为空列表,这似乎满足了 Dynamo 野兽的要求。
添加:从十进制导入十进制 表达式上方。这应该可以解决问题