AWS Обновление QLDB ion_document - PullRequest
       19

AWS Обновление QLDB ion_document

1 голос
/ 24 февраля 2020

У меня есть код, который вставляет данные в AWS QLDB, используя частичные SQL и ионные документы. Теперь хочу 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 Ответ

1 голос
/ 25 февраля 2020

Как вы заметили, вам нужно использовать операторы 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 ]

Результатом выполнения оператора обновления будут идентификаторы документов, на которые повлияло обновление.

...