无法通过Python访问Notion数据库全部条目,求助获取前6条方法
解决Notion数据库API无法获取前6条数据的问题
核心问题
你错误地将page_size和start_cursor放在了请求头(headers)中,这两个分页参数属于POST请求的**请求体(body)**参数,Notion API不会从请求头读取它们,导致你的设置完全无效,默认返回最多100条最新条目。
获取前6条数据的正确方法
要拿到数据库的前6条(最早创建的)条目,需要:
- 将分页参数放入请求体
- 指定升序排序(默认是倒序,会返回最新的6条)
代码示例:
import requests _url = 'https://api.notion.com/v1/databases/xxxxx/query' _header = { 'Authorization': _auth, 'Content-Type': 'application/json', 'Notion-Version': '2021-08-16' } # 请求体参数:设置每页6条,按创建时间升序排列 payload = { 'page_size': 6, 'sorts': [ { 'property': 'Created time', 'direction': 'ascending' } ] } _result = requests.post(_url, headers=_header, json=payload) # 处理返回结果 print(_result.json())
如果需要按其他属性排序,替换property的值即可。
获取全部106条数据的方法
Notion API单次请求最多返回100条数据,需要通过循环分页获取全部条目:
import requests def fetch_all_entries(database_id, auth_token): url = f'https://api.notion.com/v1/databases/{database_id}/query' headers = { 'Authorization': auth_token, 'Content-Type': 'application/json', 'Notion-Version': '2021-08-16' } all_entries = [] start_cursor = None while True: payload = {'page_size': 100} if start_cursor: payload['start_cursor'] = start_cursor res = requests.post(url, headers=headers, json=payload) res_data = res.json() all_entries.extend(res_data['results']) # 没有下一页时终止循环 if not res_data.get('has_more'): break start_cursor = res_data['next_cursor'] return all_entries # 调用示例 full_data = fetch_all_entries('xxxxx', _auth) print(f"共获取到 {len(full_data)} 条数据")
注意事项
start_cursor不能手动设为0,必须使用上一次请求返回的next_cursor值- 确保你的API令牌(
_auth)有该数据库的读取权限 - Notion-Version建议使用官方支持的版本,避免兼容性问题
内容的提问来源于stack exchange,提问作者ninhenzo64
相关产品推荐
相关产品推荐

