Configuration d'une API REST en Python pour DynamoDB
Dynamo DB est l'offre NoSQL d'AWS dans le vaste ensemble de bases de données gérées en tant que service qu'ils fournissent. Comme la plupart des autres services, il est entièrement sans serveur, flexible et facile à faire évoluer.
Le modèle de données
Comme nous travaillons ici sur NoSQL, il n'y a pas de réelle restriction sur la structure des données. Nous pouvons utiliser des paires clé-valeur comme attributs pour chaque élément dans un tableau. Examinons à nouveau ces mots-clés.
Tableau - terme assez familier, il s'agit essentiellement d'un ensemble de données, en l'occurrence d'éléments. C'est aussi le point de départ du travail avec DynamoDB sur la console.
Item - une entrée dans un tableau. Vous pourriez le considérer comme une ligne dans une base de données équivalente à SQL.
Attribut - Les points de données qui constituent un élément. Il peut contenir des attributs spécifiques à un élément, des métadonnées ou pratiquement tout ce qui peut être associé à un élément.
Vous pourriez considérer un tableau JSON comme l'équivalent d'une table dans DynamoDB. Je suis sûr que les choses deviendront plus claires à mesure que nous créerons notre propre tableau.
Mise en place de la base de données
C'est littéralement un jeu d'enfant de créer une nouvelle table dans DynamoDB à partir de la console AWS. Tout ce dont vous avez besoin est un nom et une clé de partition, qui est dans ce cas votre clé primaire. Cela vous aidera à rechercher des éléments dans le tableau.
Je crée un tableau pour tous les jeux auxquels j'ai joué, et je les noterai sur 10 :)
Vous pouvez jouer avec la table directement depuis la console, essayons d'ajouter un nouvel élément pour voir à quoi il ressemble.
Ma première entrée doit être mon jeu RPG (jeu de rôle) préféré - The Witcher 3. J'ajouterai un nouvel attribut pour notation et ce sera un solide 9,8 de ma part :)
Mise en place d'une API
Bien, il est maintenant temps d'écrire du code Python pour faire tout cela sans l'interface graphique ;)
## 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)
La beauté de Python est que vous pouvez configurer une API à part entière en quelques lignes de code seulement. Ce morceau de code est désormais suffisant pour que nous puissions accéder à la table et en récupérer les données. Nous utilisons la fonction scan pour récupérer des éléments de la table de jeux.
Vous pouvez démarrer l'application en utilisant python3 app.py
Et vous pouvez vous attendre à une réponse qui ressemble à ceci lorsque vous courez pour le point final /games.
Itinéraires pour créer et mettre à jour une entrée
## 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)
Ici, nous utilisons put_item pour ajouter un élément au tableau. Pour mettre à jour un enregistrement, nous utilisons la fonction update_item.
Si vous observez attentivement, nous utilisons UpdateExpression où nous spécifions les attributs que nous mettons à jour. Cela nous permet de contrôler exactement quel attribut est modifié et d'éviter les écrasements accidentels.
Et pour supprimer l'enregistrement, vous pouvez utiliser quelque chose comme ça -
# 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/<int: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
Eh bien, voilà, vous venez de configurer une API REST avec la fonctionnalité CRUD pour DynamoDB en quelques minutes grâce à Python.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











Python convient à la science des données, au développement Web et aux tâches d'automatisation, tandis que C convient à la programmation système, au développement de jeux et aux systèmes intégrés. Python est connu pour sa simplicité et son écosystème puissant, tandis que C est connu pour ses capacités de contrôle élevées et sous-jacentes.

Vous pouvez apprendre les bases de Python dans les deux heures. 1. Apprenez les variables et les types de données, 2. Structures de contrôle maître telles que si les instructions et les boucles, 3. Comprenez la définition et l'utilisation des fonctions. Ceux-ci vous aideront à commencer à écrire des programmes Python simples.

Python excelle dans les jeux et le développement de l'interface graphique. 1) Le développement de jeux utilise Pygame, fournissant des fonctions de dessin, audio et d'autres fonctions, qui conviennent à la création de jeux 2D. 2) Le développement de l'interface graphique peut choisir Tkinter ou Pyqt. Tkinter est simple et facile à utiliser, PYQT a des fonctions riches et convient au développement professionnel.

Vous pouvez apprendre les concepts de programmation de base et les compétences de Python dans les 2 heures. 1. Apprenez les variables et les types de données, 2. Flux de contrôle maître (instructions et boucles conditionnelles), 3. Comprenez la définition et l'utilisation des fonctions, 4. Démarrez rapidement avec la programmation Python via des exemples simples et des extraits de code.

Python est plus facile à apprendre et à utiliser, tandis que C est plus puissant mais complexe. 1. La syntaxe Python est concise et adaptée aux débutants. Le typage dynamique et la gestion automatique de la mémoire le rendent facile à utiliser, mais peuvent entraîner des erreurs d'exécution. 2.C fournit des fonctionnalités de contrôle de bas niveau et avancées, adaptées aux applications haute performance, mais a un seuil d'apprentissage élevé et nécessite une gestion manuelle de la mémoire et de la sécurité.

Python est largement utilisé dans les domaines du développement Web, de la science des données, de l'apprentissage automatique, de l'automatisation et des scripts. 1) Dans le développement Web, les cadres Django et Flask simplifient le processus de développement. 2) Dans les domaines de la science des données et de l'apprentissage automatique, les bibliothèques Numpy, Pandas, Scikit-Learn et Tensorflow fournissent un fort soutien. 3) En termes d'automatisation et de script, Python convient aux tâches telles que les tests automatisés et la gestion du système.

Pour maximiser l'efficacité de l'apprentissage de Python dans un temps limité, vous pouvez utiliser les modules DateTime, Time et Schedule de Python. 1. Le module DateTime est utilisé pour enregistrer et planifier le temps d'apprentissage. 2. Le module de temps aide à définir l'étude et le temps de repos. 3. Le module de planification organise automatiquement des tâches d'apprentissage hebdomadaires.

Python est très favorisé pour sa simplicité et son pouvoir, adaptés à tous les besoins des débutants aux développeurs avancés. Sa polyvalence se reflète dans: 1) Facile à apprendre et à utiliser, syntaxe simple; 2) Bibliothèques et cadres riches, tels que Numpy, Pandas, etc.; 3) Support multiplateforme, qui peut être exécuté sur une variété de systèmes d'exploitation; 4) Convient aux tâches de script et d'automatisation pour améliorer l'efficacité du travail.
