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
)
我正在使用 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
)