PythonのCosmos ChangeFeedのDocument

Cosmos DBのChangeFeedをPythonで書こうとすると、デコレータ含めた定義はこんな感じになる。

@app.cosmos_db_trigger(arg_name="documents", 
                       database_name="my_database", 
                       container_name="my_container", 
                       connection="COSMOS_CONNECTION", 
                       lease_container_name="leases_my_container", 
                       create_lease_container_if_not_exists="true")
def CosmosTrigger1(documents: func.DocumentList) -> str:

で、この”func.DocumentList”はPythonのdictライクに動作するのでつい忘れがちだけれど、当然dictそのものじゃないので、そのままdictを期待する関数に渡すとうまく動作しない。例えば以下のようなコード。

def CosmosTrigger1(documents: func.DocumentList) -> str:
    con = CosmosContainer()
    if documents:
        for document in documents:
            con.create_item(document)

to_dict()を使う。

def CosmosTrigger1(documents: func.DocumentList) -> str:
    con = CosmosContainer()
    if documents:
        for document in documents:
            con.create_item(document.to_dict())
タイトルとURLをコピーしました