🤖

Dynamo DB - Python | Float vs Decimal

2023/04/06に公開

Dynamo DB - Python | Float vs Decimal

Dynamo DBでは数値型としてN(Number / Decimal)という型があります。
しかしながら、JSONでの表現はFloatとなります。

それによってデータ型不整合エラーが発生することがあります。

これを回避するためには、Dynamo DB用のデータの保持にはDecimalを使用し、JSON出力する際にはFloatに変換する必要があります。

Float - Decimal (JSON)

import json
from decimal import Decimal

def decimal_default_proc(obj):
    if isinstance(obj, Decimal):
        return float(obj)
    raise TypeError

# JSONの読み込み時にDecimalに変換する
def json_loads(json_str):
    return json.loads(json_str, parse_float=Decimal)

# JSONの出力時にFloatに変換する
def json_dumps(json_obj):
    return json.dumps(json_obj, default=decimal_default_proc)
GitHubで編集を提案

Discussion