2017-11-06 1 views
1

Ich versuche, eine neue Tabelle in DynamoDB mit meinem Datenformat von MongoDB zu erstellen. Ich weiß, wie Basistabellen und Aktualisierung von Daten zu erstellen, jedoch für verschachtelte JSON Körper I bin nicht in der Lage KeySchema zu schaffen, wie ich bin hier.DynamoDB: Erstellen Tabelle mit keytype für verschachtelte json mit Boto3

Mein JSON Beispiel:

{ 
    'Name':"fresco" 
    'Tags':{ 
     'Genre':'Jazz' 
     'Albums':['aa','bb''cc']} 
    'Year:'2009 
} 

ich boto3 verwende, und ich weiß, wie man mit AWS zu verbinden, ich brauche nur etwas Hilfe mit keyschema für diesen Körper JSON. Außerdem habe ich über Map attribute von AWS docs lesen, aber es gab keine Implementierung dafür.

Mein Code:

import boto3 
dynamodb =boto3.resource('dynamodb') 
table = dynamodb.create_table(
    TableName = 'newTable' 
    KeySchema = [ 
    { 
     'AttributeName': 'Name', 
     'KeyType': 'Hash' 
    }, 
    { 
     'AttributeName': 'Tags', 
     'KeyType': 'Hash' 
    }, 
    { 
     'AttributeName': 'Year', 
     'KeyType': 'Hash' 
    } 

    ], 

    AttributeDefinitions=[ 
    { 
     'AttributeName': 'Name', 
     'AttributeType': 'S' 
    }, 
    { 
     'AttributeName': 'Tags', 
     'AttributeType': #dont know what to put in here. 
    }, 
    { 
     'AttributeName': 'Year', 
     'AttributeType': 'N' 
    }, 


    ], 

    ProvisionedThroughput ={ 
    'ReadCapacityUnits': 5, 
    'WriteCapacityUnits': 5 

    } 

) 

Antwort

1

In DynamoDB können Sie nur eine haben Partitionsschlüssel oder eine Partition Schlüssel + einen Sortierschlüssel. Und Sie haben auch Grenzen für die Länge Ihres Schlüssels zu - so Tags möglicherweise nicht die beste Passform. Am besten lesen Sie die developer docs.

+0

Okay, ich habe das, so gibt es eine Möglichkeit, verschachtelte json über Python zur Verfügung zu stellen? –

+0

Ja. Sieh dir [Karten (M) hier] [1] an. Verwenden Sie die DynamoDB-Konsole, um JSON einzufügen und ein Gefühl dafür zu bekommen, was JSON DynamoDB erwartet. [1]: https://boto3.readthedocs.io/en/latest/reference/services/dynamodb.html#DynamoDB.Client.put_item – smcstewart

+1

Danke, habe es jetzt gefunden. –

Verwandte Themen