Cómo añadir datos a Amazon DynamoDB

Cómo añadir datos a Amazon DynamoDB

  • Orquestación
6 min de lectura Actualizado Jul 22, 2020

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)

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de Orquestación

¿Te interesa saber más de BMC?

El Brief están nuestro correo mensual sobre el mainframe y la orquestación empresarial: investigación, historias de clientes, noticias de productos, eventos.

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Tú te has suscrito a The Brief

El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.