DataverseClient クラス

Microsoft Dataverse 操作用のクライアントの概要。

このクライアントは、Web API を介して Dataverse 環境と対話するためのシンプルで安定したインターフェイスを提供します。 Azure ID を介して認証を処理し、内部 OData クライアントに HTTP 操作を委任します。

主な機能:

  • OData CRUD 操作: レコードの作成、読み取り、更新、削除

  • SQL クエリ: Web API ?sql パラメーターを使用して読み取り専用 SQL を実行する

  • テーブル メタデータ: カスタム テーブルの作成、検査、および削除。列の作成と削除

  • ファイルのアップロード: チャンクがサポートされているファイル列にファイルをアップロードする

クライアントは、最初の使用時に内部 OData クライアントを遅延的に初期化し、ネットワーク呼び出しを即時に行わずに軽量な構築を可能にします。

Dataverse Web API と通信するすべてのメソッドは、

HttpError 成功していない場合

HTTP 応答 (例: 401、403、404、429、500)。 個別対応方式

docstrings はドメイン固有の例外のみを文書化します。

操作は名前空間に編成されます。

  • client.records – レコードの作成、更新、削除、および取得 (単一またはページ分割されたクエリ)

  • client.query – クエリ操作と検索操作

  • client.tables – テーブルと列のメタデータ管理

  • client.files – ファイルのアップロード操作

  • client.dataframe レコード CRUD の pandas DataFrame ラッパー

  • client.batch – 複数の操作を 1 つの HTTP 要求にバッチ処理する

v0 ベータメソッド (client.createclient.query_sqlなど) は 1.0 GA で削除されました。 1 つを呼び出すと、GA 置換と codemod コマンドという名前のメッセージで AttributeError が発生するようになりました。以前は、これらの呼び出しで移行ヒントなしでベア AttributeError が発生していたため、半分に移行されたコードのデバッグは手間がかかっていました。 _REMOVED_BETA_METHODSを参照してください。

クライアントは、リソースの自動クリーンアップと HTTP 接続プールのために、Pythonのコンテキスト マネージャー プロトコルをサポートしています。

コンストラクター

DataverseClient(base_url: str, credential: TokenCredential, config: DataverseConfig | None = None, *, context: OperationContext | None = None)

パラメーター

名前 説明
base_url
必須
str

"https://org.crm.dynamics.com"など、Dataverse 環境の URL。 末尾のスラッシュは自動的に削除されます。

credential
必須

認証用の Azure ID 資格情報。

config
DataverseConfig または None

言語、タイムアウト、再試行のオプション構成。 指定しない場合、既定値は from_envから読み込まれます。

規定値: None
context
必須

プラグイン/ツール属性の送信 User-Agent ヘッダーに追加された、呼び出し元定義のコンテキスト オブジェクト (省略可能)。 configと一緒に使用することはできません。代わりにDataverseConfigを介してコンテキストを渡します。

キーワードのみのパラメーター

名前 説明
context
規定値: None

推奨 – コンテキスト マネージャー (HTTP 接続プールを有効にする):


   from azure.identity import InteractiveBrowserCredential
   from PowerPlatform.Dataverse.client import DataverseClient

   credential = InteractiveBrowserCredential()

   with DataverseClient("https://org.crm.dynamics.com", credential) as client:
       record_id = client.records.create("account", {"name": "Contoso Ltd"})
       client.records.update("account", record_id, {"telephone1": "555-0100"})
   # Session closed, caches cleared automatically

手動ライフサイクル:


   client = DataverseClient("https://org.crm.dynamics.com", credential)
   try:
       record_id = client.records.create("account", {"name": "Contoso Ltd"})
   finally:
       client.close()

メソッド

close

クライアントを閉じてリソースを解放します。

HTTP セッション (存在する場合) を閉じ、内部キャッシュをクリアし、クライアントをクローズとしてマークします。 複数回呼び出しても安全です。 閉じた後、すべての操作で RuntimeErrorが発生します。

クライアントをコンテキスト マネージャーとして使用するときに自動的に呼び出されます。

例:


   client = DataverseClient(base_url, credential)
   try:
       client.records.create("account", {"name": "Contoso"})
   finally:
       client.close()
flush_cache

キャッシュされたクライアント メタデータまたは状態をフラッシュします。

close

クライアントを閉じてリソースを解放します。

HTTP セッション (存在する場合) を閉じ、内部キャッシュをクリアし、クライアントをクローズとしてマークします。 複数回呼び出しても安全です。 閉じた後、すべての操作で RuntimeErrorが発生します。

クライアントをコンテキスト マネージャーとして使用するときに自動的に呼び出されます。

例:


   client = DataverseClient(base_url, credential)
   try:
       client.records.create("account", {"name": "Contoso"})
   finally:
       client.close()
close() -> None

flush_cache

キャッシュされたクライアント メタデータまたは状態をフラッシュします。

flush_cache(kind) -> int

パラメーター

名前 説明
kind
必須
str

フラッシュするキャッシュの種類。 現在サポートされている値:

  • "picklist": ラベルから整数への変換に使用される候補リスト ラベル キャッシュをクリアします。

今後の種類 ( "entityset""primaryid"など) は、この署名を解除せずに追加される可能性があります。

返品

説明
int

削除されたキャッシュ エントリの数。

候補リスト キャッシュをクリアします。


   removed = client.flush_cache("picklist")
   print(f"Cleared {removed} cached picklist entries")