Azure的CosmosDB - 在python程序

时间:2017-06-21 20:21:04

标签: python azure azure-cosmosdb

我有一堆存储在Azure的CosmosDB数据库中的JSON文件。我还有一个读取JSON文件的python程序。我想从python

在Azure的查询资源管理器上运行查询
    SELECT VALUE Block 
      FROM c 
      JOIN Block IN c.radar50p01

到目前为止,我在python程序中的内容如下:

    def getCosmosDBClient():
        # Initialize the Python DocumentDB client
        client = document_client.DocumentClient(Constants.URL, {'masterKey': Constants.KEY})
        return client

    def getCosmosDBColl_link():
        client = getCosmosDBClient()

        db_id = Constants.RADAR_DATABASE_NAME
        db_query = "select * from r where r.id = '{0}'".format(db_id)
        db = list(client.QueryDatabases(db_query))[0]
        db_link = db['_self']

        coll_id = Constants.RADAR_COLL_NAME
        coll_query = "select * from r where r.id = '{0}'".format(coll_id)
        coll = list(client.QueryCollections(db_link, coll_query))
        if coll:
            coll = coll[0]
        else:
            raise ValueError("Collection not found in database.")
        coll_link = coll['_self']

        docs = client.ReadDocuments(coll_link)
        return docs

那么有没有办法在python中使用上面的查询,所以我得到了我需要的具体内容?

感谢。

1 个答案:

答案 0 :(得分:0)

如果您的查询已在Azure门户的查询资源管理器中成功运行,您只需使用client.QueryDocuments(collection_link, query)方法进行查询,如下面here中的代码。

  

使用SQL

执行查询
# Query them in SQL
query = { 'query': 'SELECT * FROM server s' }    

options = {} 
options['enableCrossPartitionQuery'] = True
options['maxItemCount'] = 2

result_iterable = client.QueryDocuments(collection['_self'], query, options)
results = list(result_iterable);

print(results)

希望它有所帮助。如有任何疑虑,请随时告诉我。