Registrieren Sie DynamoDB x Python / Decimal

Zuordnung von JSON zu Python

Die JSON- und Python-Dikte werden wie folgt zugeordnet:

JSON Python
object dict
array list
string unicode
number (int) int, long
number(real) float
true True
false False
null None

Wenn Sie JSON daher mit "json.loads ()" analysieren und mit "dynamo.put_item ()" registrieren, wird es mit dem oben genannten Typ registriert. Zu diesem Zeitpunkt wird ein Float-Typ wie folgt wütend.

Float types are not supported. Use Decimal types instead.

Python-Floats können nicht wie sie sind in DynamoDB registriert werden. Sie müssen sich stattdessen bei Decimal registrieren.

Wie registriere ich mich als Dezimalzahl anstelle von Float?

Float muss auf Dezimal abgebildet werden. Angenommen, die folgenden Daten sind registriert.

json_data


{"Timestamp": "20160323T203501.000+0900", "x": -0.279938, "y": -0.754028, "z": -0.607758 }

Fügen Sie beim Parsen von JSON parse_float = decimal.Decimal hinzu, wie unten gezeigt.

import json
import boto3
import decimal
#...Kürzung
item = json.loads(json_data, parse_float=decimal.Decimal)
dynamo = boto3.resource('dynamodb').Table('ThisIsJustTest')
dynamo.put_item(Item = item)

Ergänzung

Es wurde im Python-Beamten erwähnt, aber ich habe die Informationen nicht sofort erhalten, also habe ich sie als Artikel geschrieben.

https://docs.python.org/2/library/json.html#encoders-and-decoders

parse_float, if specified, will be called with the string of every JSON float to be decoded. By default, this is equivalent to float(num_str). This can be used to use another datatype or parser for JSON floats (e.g. decimal.Decimal).

json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

Es war auch in der AWS-Dokumentation reibungslos. https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/gettingstartedguide/GettingStarted.Python.02.html

Bei der Rückkehr von Decimal

Die folgenden Methoden werden vorgestellt.

https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/gettingstartedguide/GettingStarted.Python.03.html http://stackoverflow.com/questions/1960516/python-json-serialize-a-decimal-object

Recommended Posts

Registrieren Sie DynamoDB x Python / Decimal
Verwenden Sie DynamoDB mit Python
DynamoDB Script Memo (Python)
Pythons Umgang mit Dezimalstellen
Brüche in Python anzeigen
x86-Compiler selbst erstellt mit Python
Setzen Sie Python 3.x in Ubuntu ein
Führen Sie Tensorflow 2.x unter Python 3.7 aus
2.x, 3.x Serienzeichencode von Python
Konvertieren Sie Python 3.x-Code in Python 2.x.
Registrieren Sie das Redmine-Problem von Python
Python x GIS-Grundlagen (3)
Installieren Sie Python 2.7.9 und Python 3.4.x mit pip.
Python-Memo Anaconda x Jupyter-Notizbuch
Betreiben Sie DynamoDB von Python aus wie SQL.
Versuchen Sie den Zugriff auf das SPS-Register in Python
GitHub x Python-Entwicklungsvorbereitungsnotiz
Python x Tensoflow x Gesichtserkennung
Grundlagen von Python x GIS (Teil 2)
[Blender x Python] Lass uns zufällig meistern !!
Konvertieren Sie die Dezimalzahl in n-ary [Python]
[Blender x Python] Lass uns die Rotation meistern !!
CentOS 6.x x86_64 Python-2.7.4 U / min Paketerstellung
Versuchen Sie es mit Amazon DynamoDB von Python