python - 尝试使用 python boto 库插入 float 时出现 DynamoDBNumberError

标签 python amazon-web-services floating-point amazon-dynamodb boto

代码片段:

conn = dynamo_connect()

company = Table("companydb",connection=conn)

companyrecord = {'company-slug':'www-google-com12','founding-year':1991, 'randomlist' :[1,2,3,4,5], 'randomdict' : {'a':[1,2,3],'b':'something','randomnumber':10.55} }

company.put_item(data=companyrecord)

我收到以下错误:

File "C:\Python27\lib\site-packages\boto\dynamodb2\items.py", line 329, in prepare_full
    final_data[key] = self._dynamizer.encode(value)
  File "C:\Python27\lib\site-packages\boto\dynamodb\types.py", line 279, in encode
    return {dynamodb_type: encoder(attr)}
  File "C:\Python27\lib\site-packages\boto\dynamodb\types.py", line 335, in _encode_m
    return dict([(k, self.encode(v)) for k, v in attr.items()])
  File "C:\Python27\lib\site-packages\boto\dynamodb\types.py", line 279, in encode
    return {dynamodb_type: encoder(attr)}
  File "C:\Python27\lib\site-packages\boto\dynamodb\types.py", line 305, in _encode_n
    raise DynamoDBNumberError(msg)
boto.dynamodb.exceptions.DynamoDBNumberError: BotoClientError: Inexact numeric for `10.55`

最佳答案

如果您正在处理更大的集合并希望避免按记录处理以转换十进制,这会有所帮助。

from decimal import Decimal

import json

changed_data = json.loads(json.dumps(data), parse_float=Decimal)

关于python - 尝试使用 python boto 库插入 float 时出现 DynamoDBNumberError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28425117/

相关文章:

python - 如何模拟Python中的模块但不是所有方法

python - 处理 python 字典中的哈希冲突

amazon-web-services - 在哪里部署用于 API 预测的机器学习模型?

amazon-web-services - 如何使用 HadoopJarStep Config.Step 属性?

performance - AVX中绝对值的浮点比较

python - 如何在 Python 中重构 100 多个类方法?

Python 多行 JSON 和变量

amazon-web-services - 如何计算映射器/缩减器的数量,以最大限度地提高在亚马逊云上运行的 mahout Recommender Job 的性能?

python - 从 Python 到 C, float 的精度是否发生变化?

objective-c - NSTimeInterval 到可读的 NSNumber