我在我的项目中使用CosmosDB(Azure documentDB),用Python 3编写。
我一直在寻找一段时间,但我无法找到如何查询我的表格。我已经看到了一些示例代码,但是我没有看到如何查询的示例...我所能做的就是获取所有文档(当我的数据库大于80GB时不理想)。
GitHub repo显示了一组非常小的数据库和集合操作:https://github.com/Azure/azure-documentdb-python/blob/master/samples/CollectionManagement/Program.py
following SO帖子显示了如何阅读所有文档...但不是如何执行查询,例如“WHERE = X;”
如果有人可以指出我正确的方向,并且可能提供一个展示如何运行查询的示例,我真的很感激。
答案 0 :(得分:4)
根据我的理解,我想您想知道如何使用Python执行类似SQL的查询来检索DocumentDB API的Azure CosmosDB上的文档,请参阅以下here中的代码。
使用SQL
执行查询from pydocumentdb import document_client uri = 'https://ronyazrak.documents.azure.com:443/' key = '<your-primary-key>' client = document_client.DocumentClient(uri, {'masterKey': key}) db_id = 'test1' 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 = 'test1' coll_query = "select * from r where r.id = '{0}'".format(coll_id) coll = list(client.QueryCollections(db_link, coll_query))[0] coll_link = coll['_self'] query = { 'query': 'SELECT * FROM server s' } docs = client.QueryDocuments(coll_link, query) print list(docs)
上面的代码使用方法QueryDocuments
。
如有任何疑虑,请随时告诉我。
更新:结合我链接的其他SO线程的示例代码,如下所示。
word_dict = dict()
for word_count in words:
if word_count[0] not in word_dict:
word_dict[word_count[0]] = word_count[1]
答案 1 :(得分:0)
我最近遇到了类似的问题。您可以通过调用fetch_next_block()来获取块(而不是整个查询集)。
query = "select * from c"
options = {'maxItemCount': 1000, 'continuation': True}
q = db_source._client.QueryDocuments(collection_link, query, options)
block1 = q.fetch_next_block()
block2 = q.fetch_next_block()
答案 2 :(得分:0)
query = 'SELECT * FROM c'
docs = list(client.QueryItems(coll_link,query))
QueryDocuments已替换为QueryItems。