分页与游标
查询结果按数据集的业务键稳定排序,用游标逐页取回。
请求与响应
| 位置 | 成员 | 说明 |
|---|---|---|
| 请求体 | page.limit | 每页行数,1 至 1000,默认 1000。 |
| 请求体 | page.cursor | 首页省略或为 null;之后填上一页返回的 page.nextCursor。 |
| 响应 | page.nextCursor | 下一页的游标;已到最后一页时为 null。 |
| 响应 | page.complete | 为 true 表示本页是最后一页。 |
规则
- 翻页时
select、where与page.limit必须与首页完全一致。游标绑定这次查询、所用凭据和首页的发布版本,改变其中任何一项都要从首页重新开始。 - 游标固定首页所用的发布版本,翻页期间数据不会因新版本发布而错位。请求体同时携带
releaseId时,它必须与游标的版本一致。 - 游标有时效;过期或无效时从首页重新查询即可。
相关错误
| 状态 | 错误码 | 含义 |
|---|---|---|
| 422 | invalid-cursor | 游标无效或已过期,属于其他查询或其他凭据,或与 releaseId 冲突。 |
| 409 | cursor-release-unavailable | 游标所属的发布版本已不可用。 |
| 409 | release-unavailable | 游标所属的版本不再是该数据集的当前版本。 |
遇到这三种错误时从首页重新查询。
示例
import requests
BASE_URL = 'https://api.<环境域名>' # 替换为实际服务地址,见快速开始
HEADERS = {'Authorization': 'Bearer <ACCESS_TOKEN>'}
body = {
'select': ['security_code', 'trading_date', 'close_price'],
'where': [{'field': 'trading_date', 'op': 'gte', 'value': '2026-01-05'},
{'field': 'trading_date', 'op': 'lte', 'value': '2026-01-09'}],
'page': {'limit': 1000},
}
rows = []
while True:
response = requests.post(f'{BASE_URL}/v1/datasets/equity.daily_bars/query',
json=body, headers=HEADERS, timeout=60)
response.raise_for_status()
result = response.json()
rows += result['data']
if result['page']['complete']:
break
body['page']['cursor'] = result['page']['nextCursor']