You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python操作Microsoft Dataverse表CRUD及Azure AD配置步骤

使用Python操作Microsoft Dataverse的CRUD方案及配置步骤

可用方案

  • 直接调用Microsoft Power Platform REST API,配合Azure AD身份认证实现CRUD
  • 使用官方工具Power Platform CLI for Python(ppython),封装了Dataverse操作逻辑
  • 用azure-identity + requests组合实现自定义调用,灵活性最高,适合大多数场景

前置配置(基于已有Azure AD应用注册)

  1. 登录Azure门户,进入你的应用注册页面
  2. API权限配置:
    • 点击「API权限」→「添加权限」,搜索并选择Dataverse
    • 根据业务场景选择权限类型:
      • 后台服务场景选「应用权限」,推荐添加crm.readwrite
      • 用户上下文场景选「委派权限」,推荐添加user_impersonation
    • 点击「授予管理员同意」(应用权限必须完成此步,委派权限测试时也可提前授予)
  3. 获取认证密钥:
    • 进入「证书和密码」→「新建客户端密码」,设置过期时间后保存,务必记录密码值(仅显示一次)
  4. 记录关键信息:
    • 租户ID(Azure AD目录ID)
    • 客户端ID(应用注册的应用ID)
    • 客户端密码(刚创建的密钥)
    • Dataverse环境URL(格式:https://<环境名称>.crm.dynamics.com)

代码实现(以azure-identity + requests为例)

1. 安装依赖

pip install azure-identity requests

2. 获取访问令牌(应用权限场景)

from azure.identity import ClientSecretCredential

# 替换为你的实际信息
tenant_id = "xxx-xxx-xxx-xxx"
client_id = "xxx-xxx-xxx-xxx"
client_secret = "xxx-xxx-xxx-xxx"
dataverse_url = "https://your-env.crm.dynamics.com"

# 获取Dataverse访问令牌
credential = ClientSecretCredential(tenant_id, client_id, client_secret)
token = credential.get_token("https://dynamicscrm.azure.net/.default")
access_token = token.token

3. CRUD操作示例

读取记录(以账户表为例)

import requests

headers = {
    "Authorization": f"Bearer {access_token}",
    "OData-MaxVersion": "4.0",
    "OData-Version": "4.0",
    "Accept": "application/json",
    "Content-Type": "application/json; charset=utf-8"
}

# 读取前10条账户记录
response = requests.get(
    f"{dataverse_url}/api/data/v9.2/accounts?$top=10",
    headers=headers
)
response.raise_for_status()
print("读取的账户数据:", response.json())

创建记录

new_account = {
    "name": "测试科技公司",
    "telephone1": "010-12345678",
    "address1_city": "北京"
}

response = requests.post(
    f"{dataverse_url}/api/data/v9.2/accounts",
    headers=headers,
    json=new_account
)
response.raise_for_status()
# 提取新建记录ID
account_id = response.headers["OData-EntityId"].split("(")[1].split(")")[0]
print("新建账户ID:", account_id)

更新记录

updated_data = {
    "name": "更新后的测试科技公司",
    "description": "这是一条更新后的测试账户数据"
}

response = requests.patch(
    f"{dataverse_url}/api/data/v9.2/accounts({account_id})",
    headers=headers,
    json=updated_data
)
response.raise_for_status()
print("账户更新成功")

删除记录

response = requests.delete(
    f"{dataverse_url}/api/data/v9.2/accounts({account_id})",
    headers=headers
)
response.raise_for_status()
print("账户删除成功")

其他方案说明

  • Power Platform CLI for Python:官方封装工具,安装后可直接通过命令行或脚本调用内置方法,减少重复代码,适合快速开发
  • 社区库dynamicscrm-api:简化了API调用逻辑,但需注意版本兼容性,建议优先使用官方工具或原生API调用

内容的提问来源于stack exchange,提问作者AnnoNeemuse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 12:11:27