使用notion-sdk-py连接Notion页面失败,提示找不到数据库ID
解决Notion SDK Python中"Could not find database with ID"错误
针对你遇到的notion_client.errors.APIResponseError: Could not find database with ID错误,按以下步骤排查解决:
1. 核对数据库ID的正确性
错误提示中的ID是9e8f0319-9daf-4a73-a900-1a2afcab9450(带连字符),而你代码中使用的是无连字符版本9e8f03199daf4a73a9001a2afcab9450——两种格式Notion SDK都支持,但必须确保是目标数据库的真实ID。获取正确ID的方式:
- 打开目标数据库页面,复制浏览器地址栏的链接,格式为
https://www.notion.so/[工作区名]/[数据库名]-[ID],链接末尾的那串字符就是数据库ID。
2. 将数据库共享给你的Notion集成
这是该错误最常见的原因,按以下操作完成共享:
- 打开目标数据库页面,点击右上角「分享」按钮
- 在分享弹窗中,搜索你创建的Notion集成名称(即生成
secret_xxxToken的集成) - 给集成分配「编辑」或「只读」权限(根据你的需求),点击「邀请」
3. 检查集成的权限范围
确保你的Notion集成在创建时开启了必要的权限:
- 登录Notion开发者后台,找到对应集成
- 确认「权限」选项卡中,已勾选「数据库内容」相关权限(如「读取数据库内容」「编辑数据库内容」)
4. 确认目标是数据库而非普通页面
notion.databases.query接口仅适用于Notion数据库(表格、看板、日历等类型)。如果你的目标是普通页面,需改用页面相关API,比如notion.pages.retrieve获取页面信息,或notion.blocks.children.list获取页面内的块内容。
修正后的示例代码
from notion_client import Client from notion_client.helpers import collect_paginated_api notion = Client(auth="secret_#################") list_users_response = notion.users.list() print(list_users_response) # 使用正确的数据库ID(带连字符或不带均可,确保与实际一致) try: all_results = collect_paginated_api( notion.databases.query, database_id="9e8f0319-9daf-4a73-a900-1a2afcab9450" ) print("查询结果:", all_results) except Exception as e: print("错误详情:", str(e))
内容的提问来源于stack exchange,提问作者Andrew Vozniak
相关产品推荐
相关产品推荐

