gpt4 book ai didi

Python和DynamoDB十进制。不精确

转载 作者:行者123 更新时间:2023-12-01 01:45:40 24 4
gpt4 key购买 nike

我正在尝试从我的dynamodb表中删除一个项目,但是却遇到此异常:

decimal.Inexact: [<class 'decimal.Inexact'>, <class 'decimal.Rounded'>]

我不知道如何解决它,有什么帮助吗?这是代码:
dynamodb = boto3.resource('dynamodb', region_name='***')

table = dynamodb.Table('***')

propid = 1234
column_set = Decimal(44.30912302164986)

print("Attempting a conditional delete...")

try:
response = table.delete_item(
Key={
'hashkey': propid,
'rangekey': column_set
},
)
except ClientError as e:
if e.response['Error']['Code'] == "ConditionalCheckFailedException":
print(e.response['Error']['Message'])
else:
raise
else:
print("DeleteItem succeeded:")

以后编辑:

当我这样做时,它似乎无法正确存储:
year = decimal.Decimal(44.309123021649860)

它打印:
44.30912302164986016350667341612279415130615234375

最佳答案

我不知道为什么会这样,但是对于它的值(value),您可以执行以下操作(基于boto3问题线程中的this comment):

with decimal.localcontext(boto3.dynamodb.types.DYNAMODB_CONTEXT) as ctx:
ctx.traps[decimal.Inexact] = False
ctx.traps[decimal.Rounded] = False
column_set = ctx.create_decimal_from_float(v)

response = table.delete_item(
Key={
'hashkey': propid,
'rangekey': column_set
},
)

关于Python和DynamoDB十进制。不精确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49633504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com