Wie man Daten zu Amazon DynamoDB fügt

Wie man Daten zu Amazon DynamoDB fügt

  • Orchestrierung
6 Minuten Lesezeit Aktualisiert Jul 22, 2020

Auf einen Blick: Anleitungen zum Hinzufügen von Daten zu Amazon DynamoDB mittels Kommandozeile und Python werden bereitgestellt, die lokale Einrichtung, Tabellenerstellung und Dateneinfügung mit AWS CLI und Boto3 detailliert beschreiben.

  • Laden Sie DynamoDB lokal herunter und richten Sie sie ein, um Gebühren zu vermeiden.
  • Verwenden Sie AWS CLI, um eine Tabelle zu erstellen und Daten hinzuzufügen.
  • Nutzen Sie die Boto3-Bibliothek von Python für eine einfachere Datenmanipulation.

In diesem Artikel zeigen wir, wie man Daten mit der Kommandozeile und Python zu Amazon DynamoDB hinzufügen kann. Wenn Sie neu bei diesem Produkt sind, sehen Sie sich unsere DynamoDB-Einführung an.

DynamoDB einrichten

Zuerst lade DynamoDB bei Amazon herunter. Führe es lokal aus, um Abonnementgebühren zu vermeiden, bevor du bereit bist, dein Projekt in die Cloud zu bringen. (Amazon sagt, so solltest du ihre Datenbank nutzen.)

Entpacken Sie DynamoDB und starten Sie es so:

    java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb

Installiere die Amazon Boto3 API. Boto3 ist Amazons Python-Schnittstelle zu all ihren Produkten, S3, DynamoDB usw.

    pip install boto3

Jetzt werden wir einige Daten erstellen. Das werden Finanztransaktionen sein. Der Schlüssel wird transNo sein. Also erstelle die Ausgabentabelle . Du musst zuerst den AWS CLI-Client installieren.

Beachten Sie, dass wir endpoint-url verwenden, um anzuzeigen, dass wir DynamoDB lokal verwenden.

    aws dynamodb create-table \
    --table-name expenses \
    --attribute-definitions AttributeName=transNo,AttributeType=N \
    --key-schema AttributeName=transNo,KeyType=HASH \
    --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
--endpoint-url http://localhost:8000

Öffne eine Python-Shell und prüfe, ob es eine Tabelle gibt.

Es sollte antworten:

    import boto3

boto3.resource('dynamodb', endpoint_url='http://localhost:8000').Table('expenses')

Es sollte antworten:

    dynamodb.Table(name='expenses')

Fügen Sie Daten aus der Kommandozeile hinzu

Unten fügen wir eine Transaktion mit nur einer Transaktionsnummer und einem Datum hinzu. Das N bedeutet, dass das TransNo eine Zahl ist, und S bedeutet, dass das Datum eine Zeichenkette ist. (DynamoDB erkennt dieses ISO-8601-Datumsformat, sodass Sie mit diesem Attribut arbeiten können, als wäre es ein Datum.)

Wichtiger Hinweis: Wenn du den Put-Item verwendest, musst du den Datentyp (N, Zahl, S, String usw.) mit dem Wert in das JSON setzen. Du setzt auch Zahlen in Anführungszeichen. Wenn du Boto3 verwendest, musst du das nicht tun.

    aws dynamodb put-item \
--table-name expenses \
--item '{
"transNo": {"N": "1" },
"date": {"S": "2020-03-19"}
}' \
--return-consumed-capacity TOTAL --endpoint-url http://localhost:8000

Daten mit Python Boto3 hinzufügen

Der folgende Code ist selbsterklärend mit diesen zusätzlichen Anmerkungen.

  • Wörterbücher und JSON sind bei Verwendung von Python ebenfalls dasselbe. Also konstruiere JSON mit Wörterbüchern, da das viel einfacher ist. Die put_item-Methode akzeptiert ein Wörterbuch oder JSON.
  • Beachten Sie, dass Boto3 keine Gleitkommazahlen akzeptiert. Stattdessen verwenden Sie die Dezimalzahl
  • Für einen Betrag wählen wir eine zufällige ganze Zahl randint() und multiplizieren sie mit random(), da diese kleiner als 1 ist (finanzielle Beträge sind wahrscheinlich meist größer als 1).

Die Daten, die wir an DynamDB weitergeben, sehen folgendermaßen aus:

    {'transNo': 87049131615, 'amount': Decimal('373.5446821689723'), 'transDate': '2020-03-19'}

Der vollständige Code

Hier ist der vollständige Code:

    import boto3
import random
from decimal import *


def load_transactions(dynamodb):

    table = dynamodb.Table('expenses')

    trans = {}

    trans['transNo'] = random.randint(100000, 99999999999)
    trans['amount'] = Decimal(str(random.random()*random.randint(10,1000)))
    trans['transDate'] = '2020-03-19'

    print(trans)

    table.put_item(Item=trans)


if __name__ == '__main__':


    dynamodb = boto3.resource('dynamodb',  endpoint_url = "http://localhost:8000")

    load_transactions(dynamodb)

Zusätzliche Ressourcen

Mehr zu diesem Thema finden Sie im BMC Big Data & Machine Learning Blog oder schauen Sie sich diese Ressourcen an:

Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.

Mehr aus Orchestrierung

Interessieren Sie sich für mehr von BMC?

The Brief ist unsere monatliche E-Mail zum Mainframe und zur Enterprise-Orchestrierung: Recherchen, Kundenberichte, Produktnachrichten, Events.

Mit der Registrierung für dieses Angebot bestätigen Sie, dass Sie die Datenschutzrichtlinie von BMC gelesen und zugestimmt haben.

Sie haben The Brief abonniert

Das Briefing umfasst die Mainframe- und Enterprise-Orchestrierung – BMC AMI und Control-M – sowie die Analystenforschung, Kundeneinsätze und Events in beiden Bereichen.