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

如何通过API的MoreFlag标签循环拉取全部分页交易数据

分页拉取API交易数据实现方案

核心逻辑为通过while循环控制分页请求,每次请求完成后判断返回参数中的MoreFlag字段,值为1时更新分页参数继续请求下一页,值为0时终止循环,同时将每次拉取到的交易数据汇总到统一列表中。

完整实现代码如下:

# 初始化基础参数
station_name = 'ORANGE'
all_transactions = []  # 存储全部拉取到的交易数据
start_record = 1  # 初始查询起始记录位
more_flag = 1  # 初始翻页标识设为1,触发首次请求

# 若client实例未配置license key和password,可在此处补充client初始化逻辑
while more_flag == 1:
    # 构造当前页查询参数
    usageSearchQuery = {
        'stationName': station_name,
        'startRecord': start_record,
        'numTransactions': 500
    }
    # 调用接口获取数据
    trans_data = client.service.getTransactionData(usageSearchQuery)
    
    # 接口响应异常时终止循环,可根据业务需要调整或删除该判断
    if trans_data.responseCode != '100':
        print(f"接口调用失败,错误信息:{trans_data.responseText}")
        break
    
    # 提取当前页交易数据追加到总列表
    current_page_trans = trans_data.transactions.transactionData
    all_transactions.extend(current_page_trans)
    
    # 更新翻页标识和下一页起始记录位
    more_flag = trans_data.MoreFlag
    start_record += 500
    print(f"已累计拉取{len(all_transactions)}条交易数据,当前翻页标识:{more_flag}")

# 循环结束后all_transactions即为全量交易数据,可直接进行后续处理
# 示例:打印所有交易数据
for trans in all_transactions:
    print(trans)

补充说明

  • 若接口在无交易数据返回时transactionData字段结构会发生变化,可在追加数据前增加字段存在性判断,例如:if hasattr(trans_data.transactions, 'transactionData'): 再执行数据追加操作
  • 可根据业务需要增加最大拉取页数限制,避免特殊情况下接口MoreFlag返回异常导致死循环

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:15:08