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

Python调用Notion API多条件AND过滤查询验证失败求助

Notion API多条件AND过滤正确构造方法

核心问题分析

你遇到的APIResponseError本质是Filter结构不符合Notion API规范:自定义属性(如Project、Status)必须明确指定property字段,多条件组合必须嵌套在and数组中,且每个条件的结构要和属性类型严格匹配。

正确代码示例

1. 使用notion_client库的写法

from notion_client import Client
import os

# 初始化客户端
notion = Client(auth=os.getenv("NOTION_API_KEY"))
database_id = "你的数据库UUID"

# 构造多条件AND过滤
filter_config = {
    "and": [
        # 创建时间过滤
        {"created_time": {"after": "2024-01-01T00:00:00Z"}},
        # Project属性(假设为Select类型)
        {"property": "Project", "select": {"equals": "项目A"}},
        # Status属性(假设为Select类型)
        {"property": "Status", "select": {"equals": "进行中"}}
    ]
}

# 执行查询
try:
    query_result = notion.databases.query(
        database_id=database_id,
        filter=filter_config
    )
    print("查询结果:", query_result)
except Exception as e:
    print("错误详情:", e)

2. 使用requests库的写法

import requests
import os

NOTION_TOKEN = os.getenv("NOTION_API_KEY")
DB_ID = "你的数据库UUID"
api_url = f"https://api.notion.com/v1/databases/{DB_ID}/query"

headers = {
    "Authorization": f"Bearer {NOTION_TOKEN}",
    "Content-Type": "application/json",
    "Notion-Version": "2022-06-28"  # 必须指定兼容的API版本
}

# 构造请求体中的过滤条件
request_body = {
    "filter": {
        "and": [
            {"created_time": {"after": "2024-01-01T00:00:00Z"}},
            {"property": "Project", "select": {"equals": "项目A"}},
            {"property": "Status", "select": {"equals": "进行中"}}
        ]
    }
}

# 发送请求
resp = requests.post(api_url, json=request_body, headers=headers)
if resp.status_code == 200:
    print("查询成功:", resp.json())
else:
    print(f"错误码:{resp.status_code},详情:{resp.json()}")

关键注意事项

  • 属性类型匹配:根据数据库中属性的实际类型调整条件结构:
    • 多选属性(Multi-select):{"multi_select": {"contains": "标签值"}}
    • 关联属性(Relation):{"relation": {"contains": "关联页面UUID"}}
    • 文本属性:{"rich_text": {"contains": "关键词"}}
  • 属性名称/ID:property字段可以用属性的显示名称(大小写敏感)或属性UUID,两种方式都有效。
  • API版本:必须在请求头中指定Notion-Version,建议使用最新稳定版本(如2022-06-28),旧版本的Filter结构不兼容多条件组合。
  • 时间格式:created_time的时间值必须是ISO 8601格式(如YYYY-MM-DDTHH:MM:SSZ)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:47:17