Dynamo DB ist das NoSQL-Angebot von AWS in der umfangreichen Palette verwalteter Datenbanken als Service, die sie anbieten. Wie die meisten anderen Dienste ist es vollständig serverlos, flexibel und einfach zu skalieren.
Das Datenmodell
Da wir hier mit NoSQL arbeiten, gibt es keine wirkliche Einschränkung hinsichtlich der Datenstruktur. Wir können mit Schlüssel-Wert-Paaren als Attribute für jedes Element in einer Tabelle arbeiten. Schauen wir uns diese Schlüsselwörter noch einmal an.
Tabelle – ein ziemlich bekannter Begriff, es handelt sich im Wesentlichen um eine Sammlung von Daten, in diesem Fall Elementen. Es ist auch der Ausgangspunkt für die Arbeit mit DynamoDB auf der Konsole.
Item – ein Eintrag in einer Tabelle. Sie könnten es als Zeile in einer SQL-äquivalenten Datenbank betrachten.
Attribut – Die Datenpunkte, die ein Element bilden. Es könnte artikelspezifische Attribute, Metadaten oder praktisch alles enthalten, was mit einem Artikel verknüpft werden kann.
Sie können sich ein JSON-Array als Äquivalent zu einer Tabelle in DynamoDB vorstellen. Ich bin mir sicher, dass die Dinge klarer werden, wenn wir unsere eigene Tabelle erstellen.
Einrichten der Datenbank
Es ist buchstäblich ein Kinderspiel, über die AWS-Konsole eine neue Tabelle in DynamoDB zu erstellen. Sie benötigen lediglich einen Namen und einen Partitionsschlüssel, der in diesem Fall Ihr Primärschlüssel ist. Dies hilft Ihnen bei der Suche nach Elementen in der Tabelle.
Ich erstelle eine Tabelle für alle Spiele, die ich gespielt habe, und werde sie mit maximal 10 bewerten :)
Sie können direkt von der Konsole aus mit der Tabelle herumspielen. Versuchen wir, ein neues Element hinzuzufügen, um zu sehen, wie es aussieht.
Mein erster Eintrag muss mein Lieblings-RPG (Rollenspiel) sein – The Witcher 3. Ich werde ein neues Attribut für die Bewertung hinzufügen und es wird eine solide 9,8 von mir sein :)
Einrichten einer API
Richtig, jetzt ist es an der Zeit, etwas Python-Code zu schreiben, um das alles ohne die GUI zu erledigen ;)
## app.py from flask import Flask, jsonify, request import boto3 from boto3.dynamodb.conditions import Key import uuid # Import uuid module for generating UUIDs app = Flask(__name__) # Initialize DynamoDB client dynamodb = boto3.resource('dynamodb', region_name='ap-south-1') # Replace with your region ## Do keep in mind to save your AWS credentials file in the root directory table = dynamodb.Table('games') # Replace with your table name # Route to get all games @app.route('/games', methods=['GET']) def get_games(): try: response = table.scan() games = response.get('Items', []) return jsonify({'games': games}), 200 except Exception as e: return jsonify({'error': str(e)}), 500 if __name__ == '__main__': app.run(debug=True)
Das Schöne an Python ist, dass Sie mit nur wenigen Codezeilen eine vollwertige API einrichten können. Dieser Codeabschnitt reicht nun aus, um auf die Tabelle zuzugreifen und die Daten daraus abzurufen. Wir nutzen die Scan-Funktion, um Gegenstände vom Spieltisch abzurufen.
Sie können die App starten, indem Sie python3 app.py verwenden
Und Sie können eine Antwort erwarten, die so aussieht, wenn Sie sich für den /games-Endpunkt entscheiden.
Routen zum Erstellen und Aktualisieren eines Eintrags
## app.py from flask import Flask, jsonify, request import boto3 from boto3.dynamodb.conditions import Key import uuid # Import uuid module for generating UUIDs app = Flask(__name__) # Initialize DynamoDB client dynamodb = boto3.resource('dynamodb', region_name='ap-south-1') # Replace with your region ## Do keep in mind to save your AWS credentials file in the root directory table = dynamodb.Table('games') # Replace with your table name # Route to get all games @app.route('/games', methods=['GET']) def get_games(): try: response = table.scan() games = response.get('Items', []) return jsonify({'games': games}), 200 except Exception as e: return jsonify({'error': str(e)}), 500 if __name__ == '__main__': app.run(debug=True)
Hier verwenden wir put_item, um der Tabelle ein Element hinzuzufügen. Zum Aktualisieren eines Datensatzes verwenden wir die Funktion update_item.
Wenn Sie genau hinschauen, verwenden wir UpdateExpression, wo wir die Attribute angeben, die wir aktualisieren. Dadurch können wir genau steuern, welches Attribut geändert wird, und versehentliches Überschreiben vermeiden.
Und um den Datensatz zu löschen, können Sie so etwas tun -
# Route to create a new game @app.route('/games', methods=['POST']) def create_game(): try: game_data = request.get_json() name = game_data.get('name') rating = game_data.get('rating') hours = game_data.get('hours', 0) # Generate a random UUID for the new game id = str(uuid.uuid4()) if not name or not rating: return jsonify({'error': 'Missing required fields'}), 400 # Store the game in DynamoDB table.put_item(Item={'id': id, 'name': name, 'rating': rating, 'hours': hours}) # Return the created game with the generated UUID created_game = {'id': id, 'name': name, 'rating': rating} return jsonify({'message': 'Game added successfully', 'game': created_game}), 201 except Exception as e: return jsonify({'error': str(e)}), 500 # Route to update an existing game @app.route('/games/<id>', methods=['PUT']) def update_game(id): try: game_data = request.get_json() name = game_data.get('name') rating = game_data.get('rating') hours = game_data.get('hours', 0) if not name and not rating: return jsonify({'error': 'Nothing to update'}), 400 update_expression = 'SET ' expression_attribute_values = {} if name: update_expression += ' #n = :n,' expression_attribute_values[':n'] = name if rating: update_expression += ' #r = :r,' expression_attribute_values[':r'] = rating if hours: update_expression += ' #h = :h,' expression_attribute_values[':h'] = hours update_expression = update_expression[:-1] # remove trailing comma response = table.update_item( Key={'id': id}, UpdateExpression=update_expression, ExpressionAttributeNames={'#n': 'name', '#r': 'rating', '#h': 'hours'}, ExpressionAttributeValues=expression_attribute_values, ReturnValues='UPDATED_NEW' ) updated_game = response.get('Attributes', {}) return jsonify(updated_game), 200 except Exception as e: return jsonify({'error': str(e)}), 500 </id>
Nun, da haben Sie es, Sie haben dank Python in wenigen Minuten eine REST-API mit CRUD-Funktionalität für DynamoDB eingerichtet.
Das obige ist der detaillierte Inhalt vonEinrichten einer REST-API in Python für DynamoDB. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Sie können grundlegende Programmierkonzepte und Fähigkeiten von Python innerhalb von 2 Stunden lernen. 1. Lernen Sie Variablen und Datentypen, 2. Master Control Flow (bedingte Anweisungen und Schleifen), 3.. Verstehen Sie die Definition und Verwendung von Funktionen, 4. Beginnen Sie schnell mit der Python -Programmierung durch einfache Beispiele und Code -Snippets.

Python wird in den Bereichen Webentwicklung, Datenwissenschaft, maschinelles Lernen, Automatisierung und Skripten häufig verwendet. 1) In der Webentwicklung vereinfachen Django und Flask Frameworks den Entwicklungsprozess. 2) In den Bereichen Datenwissenschaft und maschinelles Lernen bieten Numpy-, Pandas-, Scikit-Learn- und TensorFlow-Bibliotheken eine starke Unterstützung. 3) In Bezug auf Automatisierung und Skript ist Python für Aufgaben wie automatisiertes Test und Systemmanagement geeignet.

Sie können die Grundlagen von Python innerhalb von zwei Stunden lernen. 1. Lernen Sie Variablen und Datentypen, 2. Master -Steuerungsstrukturen wie wenn Aussagen und Schleifen, 3. Verstehen Sie die Definition und Verwendung von Funktionen. Diese werden Ihnen helfen, einfache Python -Programme zu schreiben.

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

Wie kann man nicht erkannt werden, wenn Sie Fiddlereverywhere für Man-in-the-Middle-Lesungen verwenden, wenn Sie FiddLereverywhere verwenden ...

Laden Sie Gurkendateien in Python 3.6 Umgebungsbericht Fehler: ModulenotFoundError: Nomodulennamen ...

Wie löste ich das Problem der Jiebeba -Wortsegmentierung in der malerischen Spot -Kommentaranalyse? Wenn wir malerische Spot -Kommentare und -analysen durchführen, verwenden wir häufig das Jieba -Word -Segmentierungstool, um den Text zu verarbeiten ...

Wie benutze ich den regulären Ausdruck, um das erste geschlossene Tag zu entsprechen und anzuhalten? Im Umgang mit HTML oder anderen Markup -Sprachen sind häufig regelmäßige Ausdrücke erforderlich, um ...


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Dreamweaver Mac
Visuelle Webentwicklungstools

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)