Puntos clave: Se son proporcionado instrucciones para añadir datos a Amazon DynamoDB usando línea de comandos y Python, detallando la configuración local, creación de tablas e inserción de datos con AWS CLI y Boto3.
- Descarga y configura DynamoDB localmente para evitar comisiones.
- Utiliza la CLI de AWS para Crea una tabla y añadir datos.
- Utiliza la biblioteca Boto3 de Python para facilitar la manipulación de datos.
En este artículo, mostramos cómo añadir datos a Amazon DynamoDB usando la línea de comandos y Python. Si te nuevo en este producto, Ve nuestra introducción a DynamoDB.
Configurar DynamoDB
Primero, descarga DynamoDB desde Amazon. Ejecuta la app localmente para evitar pagar cuotas de suscripción antes de te estés listo para llevar tu proyecto a la nube. (Amazon dice que así están cómo te debería utiliza su base de datos.)
Descomprime DynamoDB y Comienza así:
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
Instala la API de Amazon Boto3. Boto3 es la interfaz Python de Amazon para todos sus productos, S3, DynamoDB, etc.
pip install boto3
Ahora, vamos a Haz algunos datos. Esto serán transacciones financieras. La clave será transNo. Así que Crea la tabla de gastos. te necesitas instala primero el cliente CLI de AWS.
Ten en cuenta que utilizamos endpoint-url para indicar que son estamos usando DynamoDB localmente.
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
Abre un shell de Python y comprueba que esa tabla existe.
Debería responder:
import boto3
boto3.resource('dynamodb', endpoint_url='http://localhost:8000').Table('expenses')
Debería responder:
dynamodb.Table(name='expenses')
Añadir datos desde la línea de comandos
A continuación añadimos una transacción con solo un número de transacción y una fecha. La N significa que el transNo están un número y S significa que la fecha están una cadena. (DynamoDB reconoce este formato de fecha ISO-8601, por lo que te puede trabajar con ese atributo como si fuera una fecha.)
Nota importante: Cuando te utiliza el objeto de te tienes que poner el tipo de dato (N, número, S, cadena, etc.) con el valor en el JSON. te también poner números entre comillas. Cuando te utiliza Boto3 te no necesitas hacer eso.
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
Añadir datos con Python Boto3
El código a continuación está autoexplicativo, con estas notas adicionales.
- Los diccionarios y JSON también son igual cuando se usa Python. Así que construye JSON usando diccionarios, ya que es mucho más sencillo. El método put_item aceptará un diccionario o JSON.
- Ten en cuenta que Boto3 no acepta números de coma flotante. En su lugar, utiliza el decimal
- Para una cantidad, elegimos un número entero aleatorio randint() y lo multiplicamos por aleatorio(), ya que es menor que 1 (las cantidades financieras probablemente suelen son mayores que 1).
Los datos que transmitimos a DynamDB son los siguientes:
{'transNo': 87049131615, 'amount': Decimal('373.5446821689723'), 'transDate': '2020-03-19'}
El código completo
Aquí está el código completo:
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)
Recursos adicionales
Para más información sobre este tema, explora el blog de Big Data y Machine Learning de BMC o consulta estos recursos:
- Guía de AWS, con 15+ artículos y tutoriales sobre AWS
- Bases de datos en AWS: Cómo encajan las bases de datos en la nube en un mundo multinube
- Introducción a la fiabilidad de bases de datos
Guía DynamoDB
Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.