2017-04-21 4 views
1

Ich habe die folgende Codezeile:Wie füge ich eine Map in die DynamoDB-Tabelle ein?

table.put_item(Item={'filename' : key, 'status' : {'M' : iocheckdict }}) 

Die iocheckdict sieht wie folgt aus:

{'A': 'One', 'C': 'Three', 'D': 'Four', 'B': 'Two', 'E': 'Five'} 

Also, wenn ich den Code laufen lasse, bekomme ich diesen Fehler:

An error occurred (ValidationException) when calling the PutItem operation: One or more parameter values were invalid: Type mismatch for key status expected: S actual: M 

Warum bekomme ich das, obwohl ich M als die Art der Daten erwähnt habe?

PS: Ich habe 2 Spalten filename und status in meinem Tisch


Attributdefinitionen der Tabelle:

"AttributeDefinitions": [ 
    { 
     "AttributeName": "filename", 
     "AttributeType": "S" 
    }, 
    { 
     "AttributeName": "status", 
     "AttributeType": "S" 
    } 
], 

Ich verstehe, dass die Art der status S ist, aber ich haven habe den Kartentyp beim Erstellen der Tabelle nicht gefunden. Alles, was ich gefunden habe, sind string, binary und number.

+0

Nach http://boto3.readthedocs.io/en/latest/reference/services/dynamodb.html#DynamoDB.Client.put_item Sie eine passieren müssen einfügen M, wie "M": {"Name": {"S": "Joe"}, "Alter": {"N": "35"}} ', mit anderen Worten sollte der" dict "-Teil sein wie '{" Name ": {" S ":" Joe "}," Alter ": {" N ":" 35 "}}'. –

+0

@ EmreSevinç Ich habe mich Wörterbuch zu 'iocheckdict = {" S1 ": {" N ":" 0 "}," S2 ": {" N ":" 0 "}," S3 ": {" N ": "0"}, "S4": {"N": "0"}, "S5": {"N": "0"}} Aber diese Aussage: 'table.put_item (Item = {'Dateiname': Schlüssel, 'Status': {'M': iocheckdict}})' gibt mir den gleichen Fehler. Möglich, eine Antwort zu schreiben? – Dawny33

+0

Es wäre hilfreich, wenn Sie Ihre Frage bearbeitet und detaillierte Informationen zu Ihrer Tabelle hinzugefügt hätten, z. die Details des Schemas Ihrer Tabelle. Weil ich denke, dass die Typen der Felder 'filename' und' status' nicht mit den Typen der Variablen 'key' und' iocheckdict' übereinstimmen. –

Antwort

1

einfacher Art und Weise in DynamoDB

dynamodb = boto3.resource('dynamodb') 
table = dynamodb.Table("table_name") 

item={} 
item['filename'] = key 
item['status'] = {'A': 'One', 'C': 'Three', 'D': 'Four', 'B': 'Two', 'E': 'Five'} 

table.put_item(item) 
Verwandte Themen