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

如何通过Notion API批量更新数据库中的多条条目?

Notion API批量更新页面属性问题解答

问题

我通过以下Python代码调用Notion API查询数据库:

url = f"https://api.notion.com/v1/databases/{NotionDB}/query"
payload = {"page_size": 200}
headers = { 
    "Authorization": NotionKEY,
    "accept": "application/json",
    "Notion-Version": "2022-06-28",
    "content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
data = json.loads(response.text)

返回的data['results']是一个包含多个page对象的列表,结构大致如下:

[
    {'object': 'page',
     'id': 'ABC',
     'parent': {'type': 'database_id', 'database_id': 'XXXXX'},
     'archived': False,
     'properties': {'Prop 1': {'id': '%40QKL', ...}},
     'url': 'https://www.notion.so/XYZ'},
    {'object': 'page',
     'id': 'CDE',
     'parent': {'type': 'database_id', 'database_id': 'XXXXX'},
     'archived': False,
     'properties': {'Prop 1': {'id': '%40QKL', ...}},
     'url': 'https://www.notion.so/ABCD'},
    # 更多page对象...
]

我的目标是修改这些page对象的属性后更新数据库,目前只能通过循环逐个调用API更新:

url = "https://api.notion.com/v1/pages/ID-OF-i_th-PAGE"
payload = {"properties": data['results'][i]['properties']}
headers = {
    "Authorization": NotionKEY,
    "accept": "application/json",
    "Notion-Version": "2022-06-28",
    "content-type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)

这种方式可行,但如果有N条数据就要调用N次API。请问有没有办法通过单次调用直接更新数据库中的多条条目属性?

回答

Notion官方API目前不支持单次调用批量更新多条页面的属性,必须针对每个页面单独发起PATCH /v1/pages/{page_id}请求。

不过可以通过以下方式优化批量更新的效率:

  • 使用异步请求:借助aiohttp这类异步HTTP库,同时发起多个请求(注意不要超过Notion的API限额),减少总等待时间。
  • 添加合理延时:如果更新的页面数量较多,在循环中加入短延时(比如0.5秒),避免触发API的速率限制。
  • 提前检查API限额:Notion API免费版限额为每分钟最多3次请求,付费版有更高限额,批量更新前确认当前剩余限额,避免请求被拒绝。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 16:42:51