宇宙数据库和Python3:如何查询?

2024-04-20 01:23:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我在我的项目中使用的是用python3编写的cosmsdb(azuredocumentdb)。在

我已经找了一段时间了,但是我不知道如何查询我的表。我看到了一些示例代码,但没有看到如何查询的示例。。。我所能做的就是获取所有文档(当我的数据库大于80GB时,这并不理想)。在

GitHub repo为数据库和集合显示了一组非常小的操作:https://github.com/Azure/azure-documentdb-python/blob/master/samples/CollectionManagement/Program.py

并且following SO帖子展示了如何阅读所有文档。。。但不知道如何执行查询,比如“WHERE=X

如果有人能为我指出正确的方向,并可能提供一个示例来演示如何运行查询,我将不胜感激。在


Tags: 项目代码文档httpsgithubcom数据库示例
3条回答
query = 'SELECT * FROM c'
docs = list(client.QueryItems(coll_link,query))

QueryDocuments已被QueryItems替换。在

我最近也有类似的问题。您可以通过调用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()

根据我的理解,我想您想知道如何使用Python执行类似SQL的查询来检索documentdbapi的azurecosmsdb上的文档,请参考下面来自here的代码。在

A query is performed using 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)

上面的代码正在使用方法^{}。在

有任何问题,请随时告诉我。在


更新:结合我的示例代码为你链接的另一个SO线程,如下所示。在

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)

相关问题 更多 >