¿Cómo actualizar un valor en una tabla de DynamoDB basándose en una condición utilizando Python y boto3?
Quiero actualizar el valor actual de fecha en la columna (last_run_date) de DynamoDB basado en las siguientes condiciones:
current_date = datetime.today().strftime(‘%Y-%m-%d %H:%M:%S’)
Condiciones:
- kpi_id = KPI038
- metric_id = ‘NA’
Nombre de la tabla: CONFIG
Clave de partición: kpi_id
Clave de clasificación: metric_id
Quiero la función para actualizar un elemento en Python utilizando boto3.
El código que intenté:
current_date = datetime.today().strftime('%Y-%m-%d %H:%M:%S')
kpi_id = 'KPI038'
metric_id = 'NA'
return_value = "UPDATED_NEW"
table_name = "kpi_metastore_config"
table = dynamodb.Table(table_name)
def update_dynamodb():
try:
response = table.update_item(
Key={
'kpi_id': kpi_id,
'metric_id': metric_id
},
UpdateExpression="set last_run_date = :r",
ConditionExpression=("kpi_id = :num") & ("metric_id = :number"),
ExpressionAttributeValues={
':r' : current_date,
':num': kpi_id,
':number': metric_id
},
ReturnValues=return_value
)
return response
except Exception as error:
logger.error(error)
def lambda_handler(event, context):
response = update_dynamodb()
if __name__ == '__main__':
lambda_handler(event,context)
davy.ai
Para actualizar la columna
last_run_date
en DynamoDB según las condiciones dadas, puedes utilizar el métodoupdate_item
de la claseboto3.dynamodb.Table
. Aquí está el código actualizado:Esto es lo nuevo en este código:
boto3
al comienzo del archivo.dynamodb
utilizandoboto3.resource('dynamodb')
.table
se inicializa con el métododynamodb.Table(table_name)
.update_dynamodb()
se ha actualizado para utilizar el métodotable.update_item()
con los parámetros adecuados.ConditionExpression
ahora incluye ambas condiciones.main()
para ejecutar la funciónupdate_dynamodb()
.if __name__ == '__main__':
se ha actualizado para llamar a la funciónmain()
.