Crud DynamoDb
DynamoDb se puede utilizar en diferentes tamaños de proyectos desde proyectos pequeños a muy grandes, con todas son bondades de tiempos de respuesta bajos y gran escalabilidad.
에제르치시오
Vamos almacenar los resultados de los partidos de futbol de una o mas ligas.
요구 사항:
편집자
비주얼 스튜디오 코드
1) Inicialmente se debe importar la librería de boto3 e iniciar el recurso 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 Partition Key Liga (tipo string) y la Sort Key Partido (tipo string)
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 League, jugado 2021년 9월 26일
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 Manchester City, el resultado final fue: Chelsea 0 - 1 Manchester City. 실제 데이터에 대한 정보 제공에 대한 정보 제공
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 importante tener en cueenta, para las realizaciones se debe usar siempre el Partition Key y el Sort Key siempre y cuando este ultimo se haya definido en la tabla.
5) Como nuestra base de datos tiene muy poca información, vamos a registrar mas resultados.
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: escribir o borrar muchos datos de manera eficiente.
6)Ahora vamos a Consultar 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'}
)
ProjectionExpression: Se utiliza para definir que columnas va a retornar la Consulta
ExpressionAttributeNames: las columnas의 별칭을 정의하는 데 사용됩니다.
En este caso se utiliza el alias #L para la columna Local ya que Local es una palabra reservada de DynamoDB
7)Ahora queremos traer un partido especifico 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 este paso vamos a traer los partido por una fecha especifica.
table.query(KeyConditionExpression=Key('Liga').eq("Premier League#2021/22"),
FilterExpression= 'Fecha = :Fecha',
ExpressionAttributeValues= {
':Fecha': '2021/09/25'
}
)
9) CRUD vamos a eliminar un partido de nuestra tabla.
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,
}
)
삭제_항목에 대한 세부적인 정의는 파티션 키와 정렬 키의 정의에 따라 결정됩니다.
참조
Boto3
Documentación DynamoDB
Me pueden encontrar ko
Reference
이 문제에 관하여(Crud DynamoDb), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/cecamilo/crud-dynamodb-1d9j
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Crud DynamoDb), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/cecamilo/crud-dynamodb-1d9j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)