Używam CosmosDB (Azure DocumentDB) w moim projekcie, napisany w Pythonie 3.

Szukałem teraz, ale nie mogę dowiedzieć się, jak zapytać mój stół. Widziałem jakiś przykładowy kod, ale nie widzę przykładu, jak zapytać ... wszystko, co mogę zrobić, to zdobyć wszystkie dokumenty (nie idealne, gdy mój db jest> 80 GB).

Repo Github pokazuje bardzo małego zestawu operacji bazy danych i kolekcji: https://github.com/azure/azure-documentdb-Python/blob/master/samples/collectionManagement/program.py

I Poniżej./a> Post pokazuje, jak przeczytać wszystkie dokumenty ... ale nie jak wykonać zapytanie, takie jak "gdzie = x ; "

Naprawdę doceniłbym to, jeśli ktoś może wskazać mnie we właściwym kierunku, a może dostarczyć przykład pokazujący, jak uruchomić zapytania.

1
pookie 26 czerwiec 2017, 11:02

3 odpowiedzi

Najlepsza odpowiedź

W oparciu o moje zrozumienie, myślę, że chcesz wiedzieć, jak wykonać zapytanie podobne do SQL, używając Pythona do pobierania dokumentów na Azure CosmosDB dokumentuDB API, zapoznaj się z poniższym kodem z Oto.

Zapytanie jest wykonywane za pomocą 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)

Powyższy kod korzysta z metody QueryDocuments.

Każda troska, prosimy o daj mi znać.


AKTUALIZACJA: Połącz z moim kodem próbkowym dla drugiego, więc wątek połączony, jak poniżej.

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)
4
Peter Pan 26 czerwiec 2017, 09:19
query = 'SELECT * FROM c'
docs = list(client.QueryItems(coll_link,query))

Queridocuments zostało zastąpione queryitems.

0
Anurag 10 październik 2019, 11:06

Niedawno mam podobny problem. Możesz pobrać bloki (bez całego zestawu zapytań), dzwoniąc do 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()
0
Boyang 20 marzec 2018, 21:06