DataverseClient 类

用于Microsoft Dataverse作的高级客户端。

此客户端提供一个简单的稳定接口,用于通过 Web API 与 Dataverse 环境交互。 它通过Azure标识处理身份验证,并将 HTTP 操作委托给内部 OData 客户端。

关键功能:

  • 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 数据帧包装器

  • client.batch – 将多个操作批处理到单个 HTTP 请求中

1.0 GA 中删除了 v0 beta 方法(client.createclient.query_sql)。 现在调用一个调用时会引发 AttributeError 一个消息,其中命名了 GA 替换和 codemod 命令 - 以前,这些调用只引发一个没有 AttributeError 迁移提示,因此调试半迁移的代码很痛苦。 请参阅_REMOVED_BETA_METHODS。

客户端支持Python的上下文管理器协议进行自动资源清理和 HTTP 连接池:

构造函数

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

参数

名称 说明
base_url
必需
str

Dataverse 环境 URL,例如 "https://org.crm.dynamics.com"。 自动删除尾部斜杠。

credential
必需

用于身份验证的 Azure 标识凭据。

config

语言、超时和重试的可选配置。 如果未提供,则从中 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")