как фиксировать изменения с помощью Azure триггера Cosmos DB? - PullRequest
0 голосов
/ 12 июля 2020

У меня есть следующее требование: я хочу захватить запись из cosmosDB и pu sh ее в хранилище блога.

Эту проблему я решил с помощью функции azure триггера cosmos DB (который захватит любой изменения, внесенные в запись в контейнере cosmos DB).

Как захватить полную нагрузку?

требование: я должен получить всю запись из контейнера cosmos DB и pu sh это в хранилище блога.

поэтому проблема в том, что триггер cosmosDB захватывает только в случае каких-либо изменений в записи, так как я могу достичь этой полной загрузки.

Для полной загрузки я создал еще один сценарий python.

Ссылка: https://github.com/Azure/azure-cosmos-python

Справочный сценарий: Как обновить запись в Cosmos Db, используя python?

query_data = client.QueryItems(collection_link,
                                   'SELECT * FROM ' + COSMOS_DB_COLLECTION_ID,
                                   {'enableCrossPartitionQuery': True})
    for item in query_data:
        client.ReplaceItem(item['_self'], item, options=None)

Итак, что на самом деле мой скрипт выполняет все записи, и я вызываю ReplaceItem для каждой записи, но то, что я заметил, - это функция azure триггер cosmos DB не будет фиксировать изменения всех записей его захват только несколько записей.

так есть проблема со скриптом?

1 Ответ

0 голосов
/ 13 июля 2020

Во-первых, я думаю, что у клиента нет QueryItems.

Во-вторых, в вашем документе нет изменений.

Вы должны сделать как показано ниже:

url = os.environ['ACCOUNT_URI']
key = os.environ['ACCOUNT_KEY']
client = cosmos_client.CosmosClient(url, {'masterKey': key})
database_name = "testbowman"
container_name = "testbowman"
database = client.get_database_client(database_name)
container = database.get_container_client(container_name)
for item in container.query_items('SELECT * FROM c', enable_cross_partition_query=True):
    logging.info("This is Query database!" + json.dumps(item))
    item['Description'] = "!!!!!!!!!!!!!!"
    container.replace_item(item['id'],item)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...