#transactions #amazon-dynamodb #validationexception #pynamodb
Вопрос:
У меня есть модель, которая выглядит так:
class Task(BaseModel):
Meta = pynamodb_table_meta("my-task")
creator_id = UnicodeAttribute(null=False)
metadata = JSONAttribute(default={}, null=False)
status = UnicodeAttribute(default="new", null=False)
task_id = UnicodeAttribute(hash_key=True)
class BaseModel(Model):
created_at = UTCDateTimeAttribute()
updated_at = UTCDateTimeAttribute()
Код контроллера:
try:
task_to_be_updated = Task(task_id='valid uuid of existing task')
with TransactWrite(connection=connection) as transaction:
now = datetime.utcnow()
transaction.update(
task_to_be_updated,
actions=[
Task.creator_id.set("new uuid")
Task.status.set("in_progress"),
Task.updated_at.set(now)
],
condition=(Task.status == "new")
)
except TransactWriteError as e:
raise Exception(f"Task error {e.cause_response_code}")
Транзакция.обновление всегда завершается ошибкой с исключением ValidationException. Не уверен, в чем проблема. Если есть способ понять, где произошло исключение ValidationException, это было бы здорово, так как все, что я вижу, — это «Исключение проверки ошибок задачи», поэтому я понятия не имею, какое поле вызывает проблемы.
Комментарии:
1. Потенциально пропущенная запятая после
Task.creator_id.set("new uuid")
?