Python调用Notion API按标题查询数据库页面 如何获取page_id更新封面
Notion数据库查询过滤失效修复方案
你遇到的过滤规则不生效、返回所有数据库页面的问题,核心原因是请求传参格式不符合Notion API要求,具体修复方法如下:
核心问题修复
你当前代码使用data参数传递请求体,requests会默认将参数序列化为表单格式,而Notion API要求请求体必须为JSON格式,因此服务端无法识别过滤规则,直接返回全量数据。将data=search_data修改为json=search_data即可解决,修改后代码如下:
url = f"https://api.notion.com/v1/databases/{database_id}/query" search_data = { "filter":{ "and": [ { "property":"Drama Title", "text": { "contains":"example_show" } } ]} } res = requests.request("POST", url, headers=headers, json=search_data) page = res.json() print(page)
其他可能的失效场景排查
- 确认数据库中对应属性的名称和代码里的
Drama Title完全一致,包括大小写、空格、特殊字符,任意不一致都会导致过滤规则失效 - 如果你要筛选的
Drama Title是数据库的标题类型属性(不是普通文本属性),需要把过滤条件的text字段改为title,示例如下:
{ "property":"Drama Title", "title": { "contains":"example_show" } }
- 确认你的API Token拥有该数据库的读取权限,可在对应Notion数据库的「连接」设置中核对权限配置
过滤规则生效后,你可以从返回结果的results[0]["id"]字段获取目标页面的page_id,再调用PATCH https://api.notion.com/v1/pages/{page_id}接口即可完成页面封面修改。
内容的提问来源于stack exchange,提问作者Prabhjot Sodhi
相关产品推荐
相关产品推荐

