2017-05-29 38 views
0

私はAzureの試用アカウントを持っており、いくつかのJSONファイルをCosmosDBにアップロードしました。私は、データを見直すためのPythonプログラムを作成していますが、私はそうすることに問題があります。PythonのAzureのCosmosDBからデータを読み取る方法

import pydocumentdb.documents as documents 
import pydocumentdb.document_client as document_client 
import pydocumentdb.errors as errors 

url = 'https://ronyazrak.documents.azure.com:443/' 
key = '' # primary key 

# Initialize the Python DocumentDB client 
client = document_client.DocumentClient(url, {'masterKey': key}) 

collection_link = '/dbs/test1/colls/test1' 

collection = client.ReadCollection(collection_link) 

result_iterable = client.QueryDocuments(collection) 

query = { 'query': 'SELECT * FROM server s' } 

私は、キーは私AzureのアカウントKeysに見つけることができます私の主キーになるとどこかで読ん:これは私がこれまで持っているコードです。私はイメージに表示された私のプライマリキーでキーストリングを埋めましたが、ここのキーはプライバシ目的のために空です。

私のデータがコレクション 'test1' Collectionsにある場合、collection_linkは '/ dbs/test1/colls/test1'である必要があります。

関数client.ReadCollection()でエラーが発生しました。

"pydocumentdb.errors.HTTPFailure:ステータスコード:401 {" code ":" Unauthorized "、" message ":"入力許可トークンは要求を処理できません。予想されるペイロードがプロトコルに従って構築されていることを確認し、使用されているキーを確認してください。サーバーは次のペイロードを使用して署名しました。 'get \ ncolls \ ndbs/test1/colls/test1 \ nmon、29 may 2017 19:47:28 gmt \ n \ n' \ r \ nActivityId:03e13e74-8db4-4661-837a- f8d81a2804cc "}"

このエラーが修正されたら、何が残っていますか? JSONファイルを大きな辞書にして、データを確認できるようにしたいと思います。

私は正しい道にいるのですか?私はこれに間違った方法で近づいていますか?データベースにあるドキュメントを読むにはどうすればよいですか?ありがとう。

答えて

1

あなたのエラー情報によると、それはhereの以下に述べられているように、あなたのキーで認証が失敗したためです。

enter image description here

だからあなたのキーをチェックし、私は重要なポイントが誤っpydocumentdbを使用しているとお考え下さい。これらのidDatabase,Collection & Documentはリンクとは異なります。これらのAPI ReadCollection,QueryDocumentsは関連するリンクを渡す必要があります。 Azure CosmosDBのすべてのリソースは、リソースIDではなく、リソースリンクを介して取得する必要があります。

あなたの説明によると、コレクションIDパス/dbs/test1/colls/test1の下にすべてのドキュメントをリストしたいと思います。参考として、以下に私のサンプルコードを示します。

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'] 

docs = client.ReadDocuments(coll_link) 
print list(docs) 

hereからDocumentDB Python SDKの詳細をご覧ください。

+0

ありがとうございました!完璧に働いた。 –

関連する問題