Обновление AWS QLDB ion_document
У меня есть код, который вставляет данные в AWS QLDB с использованием частичных документов SQL и ion. Теперь хочуupdate
документ внутри QLDB, и я не могу найти на нем никакого примера. Пожалуйста помоги!
statement = 'INSERT INTO MY_TABLE'
ion_documents = loads(dumps(MY_JSON_DATA))
def query_lambda(tx_executor, query=statement, docs=ion_documents):
return tx_executor.execute_statement(query, [docs])
def retry_lambda():
print ('Retrying')
cursor = session.execute_lambda(query_lambda, retry_lambda)
1 ответ
Как вы заметили, вам необходимо использовать операторы PartiQL для обновления документов. Фрагмент кода, который вы должны вставить в документ, - это большая часть того, что вам нужно для его обновления: единственное изменение, которое вам нужно сделать, - это оператор, который вы выполняете.
В документации есть руководство по Python, которое включает примеры обновления документов: https://docs.aws.amazon.com/qldb/latest/developerguide/getting-started.python.step-5.html.
Например (из приведенной выше ссылки) следующее обновит владельца транспортного средства в образце приложения:
def update_vehicle_registration(transaction_executor, vin, document_id):
statement = "UPDATE VehicleRegistration AS r SET r.Owners.PrimaryOwner.PersonId = ? WHERE r.VIN = ?"
parameters = [document_id, convert_object_to_ion(vin)]
cursor = transaction_executor.execute_statement(statement, parameters)
try:
print_result(cursor)
logger.info('Successfully transferred vehicle with VIN: {} to new owner.'.format(vin))
except StopIteration:
raise RuntimeError('Unable to transfer vehicle, could not find registration.')
Обратите внимание на использование ?
как параметры привязки. Они будут привязаны к значениям, переданным во второй аргументexecute_statement
(в соответствующем порядке).
Вот некоторая информация об операторах обновления PartiQL: https://docs.aws.amazon.com/qldb/latest/developerguide/ql-reference.update.html. Синтаксис:
UPDATE table [ AS table_alias ] [ BY id_alias ]
SET element = data [, element = data, ... ]
[ WHERE condition ]
Результатом выполнения оператора обновления будут идентификаторы документов, на которые повлияло обновление.