Dynamodb me parece una buena opción para utilizar una base de datos (no relacional) en la nube.
Dynamodb se puede utilizar en diestentes tamaños de proyectos desde proyectos pequeños a muy grandes, con todas son bondades de tiempos de respuesta bajos y gran escalabilidad.
Ejercicio
Vamos A Almacenar Los ResultAdos de los partidos de futbol de una o mas ligas.
Requisitos:
- Tener una cuenta de aws
- Tener Configuradas las credenciales de aws en la maquina (en la consola de mac o linux ejecutar aws configure para deginir el eccess id) .se utiliza este método solo por ‘rackico’, нет esconsejable para ornornos proformivos.
- Tener Instalado Python y la libreria boto3 (Pip install Boto3)
редактор
Visual Studio Code
1) Inicialmente se debe imampormar librería de boto3 e iniciar el recurco para La utilización de Dynamodb
import boto3 from boto3.dynamodb.conditions import Key dynamodb = boto3.resource("dynamodb")
2) Creación de la tabla Partidosfutbol con la разделение ключа Лига (строка Tipo) y la sort key Партидо (строка Tipo)
dynamodb.create_table( TableName='PartidosFutbol', KeySchema=[ { 'AttributeName': 'Liga', 'KeyType': 'HASH' # Partition key }, { 'AttributeName': 'Partido', 'KeyType': 'RANGE' # Sort key } ], #Se deben crear las llaves nuevamente con su tipo de dato AttributeDefinitions=[ { 'AttributeName': 'Liga', 'AttributeType': 'S' # Se utiliza S para tipos de datos String y N para numeros }, { 'AttributeName': 'Partido', 'AttributeType': 'S' } ], ProvisionedThroughput={ 'ReadCapacityUnits': 5, 'WriteCapacityUnits': 5 } )
3) Vamos A Ingresar el Resultado de un partido de futbol Chelsea 1 – 2 Machester City De La Premier, Jugado EL 26/09/2021
table = dynamodb.Table("PartidosFutbol") table.put_item(Item={ "Liga": "Premier League#2021/22", "Partido":"Chelsea#Manchester City#2021/09/26", "Local":"Chelsea", "Visitante":"Manchester City", "MarcadorLocal":1, "MarcadorVisitante": 2, "Fecha":"2021/09/26" })
4) Revisando el Resultado Final No Fue Chelsea 1 – 2 Манчестер Сити, El Resultado Final Fu: Челси 0 – 1 Манчестер Сити. Por lo tanto debemos actustizar la información en nuestra base de datos.
table.update_item( Key={ "Liga": "Premier League#2021/22", "Partido": "Chelsea#Manchester City#2021/09/26" }, UpdateExpression="set MarcadorVisitante=:marcador_visitante,MarcadorLocal=:marcador_local", ExpressionAttributeValues={ ":marcador_visitante":1, ":marcador_local":0 }, ReturnValues="UPDATED_NEW" )
ES ВАЖНЫЕ ТЕНЕР EN CUENTA, Para las Actualizaciones se debe usar siempre el раздел.
5) Como Nuestra Base de Datos Tiene Muy Poca Información, VAMOS ASERISTRAR MAS RESSUTADOS.
partidos = [] partido1 = {"Liga": "Premier League#2021/22","Partido":"Arsenal#Tottenham Hotspur#2021/09/26","Local":"Arsenal","Visitante":"Tottenham","MarcadorLocal":3,"MarcadorVisitante": 1,"Fecha":"2021/09/25"} partido2 = {"Liga": "LaLiga#2021/22","Partido":"Athletic Bilbao#Rayo Vallecano#2021/09/21","Local":"Athletic Bilbao","Visitante":"Rayo Vallecano","MarcadorLocal":1,"MarcadorVisitante": 2,"Fecha":"2021/09/21"} partidos.append(partido1) partidos.append(partido2) with table.batch_writer() as batch: for p in partidos: content = { "Liga": p["Liga"], "Partido":p["Partido"], "Local":p["Local"], "Visitante":p["Visitante"], "MarcadorLocal":p["MarcadorLocal"], "MarcadorVisitante": p["MarcadorVisitante"], "Fecha":p["Fecha"] } batch.put_item(Item=content)
Batch_writer : nos sirve para escribir o borrar mucos datos de manera eficiente.
6) Ahora Vamos Консультант Los Partidos de La Liga Inglesa.
table.query(KeyConditionExpression=Key('Liga').eq("Premier League#2021/22"), ProjectionExpression="table.query(KeyConditionExpression=Key('Liga').eq("Premier League#2021/22"), ProjectionExpression="#L,MarcadorLocal,Visitante,MarcadorVisitante", ExpressionAttributeNames = {'#L': 'Local'} ),MarcadorLocal,Visitante,MarcadorVisitante", ExpressionAttributeNames = {'#L': 'Local'} )
ProtectionExpression : Se utiliza para definer que colunas va a retornar la consulta ExpressionAttributeNames : Se utiliza para deconir los псевдоним de las columnas
En ese caso se utiliza el alias # L para la columna local ya que Местный ES una palabra Reservada de Dynamodb
7) ahora Queremos traer un partido Operififico de la Liga Española.
table.query(KeyConditionExpression=Key('Liga').eq("LaLiga#2021/22") & Key("Partido").eq("Athletic Bilbao#Rayo Vallecano#2021/09/21") )
8) en ese paso vamos a traer los partido por una fecha eppicifica.
table.query(KeyConditionExpression=Key('Liga').eq("Premier League#2021/22"), FilterExpression= 'Fecha = :Fecha', ExpressionAttributeValues= { ':Fecha': '2021/09/25' } )
9) Como ultimo paso de nuestro Crud Вамос Элиминар ООН ПАРТИДО ДЕ НУЕСТРА Табла.
table.delete_item( Key={ 'Liga': "Premier League#2021/22", "Partido":"Chelsea#Manchester City#2021/09/26" }, ConditionExpression="MarcadorLocal = :marcador_local and MarcadorVisitante =:marcador_visante", ExpressionAttributeValues={ ":marcador_local": 0, ":marcador_visante": 1, } )
Para el caso de delete_item SE Debe Offifificar La Разделение Key Y El Core Key Siempre y Cuando Este ultimo se haya defineido en la tabla.
Я pueden encontrar en
Камило Кабралес
Оригинал: “https://dev.to/cecamilo/crud-dynamodb-1d9j”