Convert values from AWS DynamoDB to native Python types.
Makes more sensible decisions about numbers and binary values, at the cost of floating-point precision. Very lightweight.
pip install dynamodb-serialiseimport dynamodb_serialise
dynamodb_serialise.deserialise(
    {"M": {"foo": {"N": "42"}, "bar": {"B": "c3BhbQ=="}}}
)
# {'foo': 42, 'bar': b'spam'}
dynamodb_serialise.serialise(
    {'foo': 42, 'bar': b'spam'}, bytes_to_base64=True
)
# {"M": {"foo": {"N": "42"}, "bar": {"B": "c3BhbQ=="}}}Can be run to transform values at the command-line, transforming stdin to stdout as
JSON. Pass -d to deserialise instead of serialise.
The following example uses AWS CLI (aws) to produce
DynamoDB values in lists of objects, jq to convert the
scan
result to full DynamoDB values, and dynamodb-serialise to convert to native types.
aws dynamodb scan \
  --table-name my-table \
  | jq '{ L: .Items | map({ M: . }) }' \
  | python3 -m dynamodb_serialise -d