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

如何通过Python Rest API从Jira获取超过1000条数据?

Jira API批量获取数据问题修复

问题分析

你的代码无法获取超过1000条数据,核心是存在语法错误和逻辑缺陷:

  • 变量名大小写不匹配:project_data和project_Data混用,导致循环执行报错中断
  • 字符串引号语法错误:多处引号未闭合或单双引号混用,直接引发语法报错
  • 数据存储逻辑错误:每次循环直接覆盖df2['Summary'],而非累加所有页数据
  • 条件判断语法缺失:if语句缺少括号,导致循环终止逻辑失效

修复后的代码

from jira import JIRA
import requests
import pandas as pd

# 创建Jira会话并配置认证
jira_session = requests.session()
jira_session.auth = ("username", "password")
jira_session.verify = False  # 生产环境不建议禁用SSL验证

# 验证Jira连接有效性
try:
    test_response = jira_session.get('https://onjira.xxx.com/rest/api/2/myself')
    test_response.raise_for_status()
    print("成功连接到Jira")
except requests.exceptions.RequestException as e:
    print(f"无法连接到Jira: {e}")

# 配置API请求参数
base_url = 'https://onjira.xxx.com/rest/api/2/search'
query_params = {
    "jql": "project=YYYY and createdDate>=startOfMonth()",
    "startAt": 0,
    "maxResults": 1000
}

# 初始化存储所有数据的列表
all_summaries = []

while True:
    # 发送分页请求
    response = jira_session.get(base_url, params=query_params)
    response.raise_for_status()
    data = response.json()
    
    # 提取当前页的summary数据
    for issue in data['issues']:
        all_summaries.append({"Summary": issue['fields']['summary']})
    
    # 判断是否还有下一页数据
    total_count = data['total']
    current_end = query_params['startAt'] + query_params['maxResults']
    if current_end >= total_count:
        break
    
    # 更新分页起始位置
    query_params['startAt'] = current_end

# 保存所有数据到CSV
df = pd.DataFrame(all_summaries)
df.to_csv('Final_data.csv', index=False)

关键修复说明

  • 变量名统一:修正大小写混用问题,避免变量未定义报错
  • 引号语法修正:统一使用规范的引号闭合方式,修复语法错误
  • 数据累加逻辑:用列表收集所有页的summary,最后统一转为DataFrame,避免数据覆盖
  • 连接方式优化:直接给会话配置认证信息,用myself接口验证连接,比单独POST登录更可靠
  • 错误处理增强:添加raise_for_status()捕获HTTP请求错误,便于排查问题
  • JQL参数化:将JQL作为请求参数传入,避免URL拼接时的语法问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:43:19