Amazon DynamoDB benötigt speziell formatiertes JSON, wenn Elemente in die Datenbank eingefügt werden.Formatieren von Dicts und verschachtelten Dicts
Ich habe eine Funktion, die ein Wörterbuch nimmt und Werte in ein verschachteltes Dict konvertiert, das zum Einfügen formatiert ist; Der Wert wird in ein verschachteltes Diktat umgewandelt, wobei der verschachtelte Schlüssel der Datentyp des Werts ist.
Zum Beispiel Eingabe wie {'id':1, 'firstName':'joe'}
würde {'id': {'N':1}, 'firstName': {'S':'joe'}}
umgewandelt werden Dies ist derzeit erfolgreich mit dieser Funktion:
type_map = {
str:'S', unicode:'S', dict:'M',
float:'N', int:'N', bool:'BOOL'
}
def format_row(self, row):
""" Accepts a dict, formats for DynamoDB insertion. """
formatted = {}
for k,v in row.iteritems():
type_dict = {}
type_dict[ self.type_map[type(v)] ] = v
formatted[k] = type_dict
return formatted
Ich brauche diese Funktion ändern Werte zu handhaben, die dicts sein könnte.
So zum Beispiel:
{
'id':1,
'a':{'x':'hey', 'y':1},
'b':{'x':1}
}
Sollten zu verwandeln:
{
'id': {'N':1},
'a':{'M': {'x': {'S':'hey'}, 'y':{'N':1}}},
'b': {'M': {'x': {'N':1}}}
}
ich die richtige Art und Weise zu denken, dies zu tun sein muss, die Funktion innerhalb der Funktion direkt anrufen?
Hinweis: Ich verwende Python 2.7
Könnte wer auch immer downvoted hinterlassen Sie bitte einen Kommentar, wie Sie meine Lösung verbessern oder ersetzen? Vielen Dank! –