如何通过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
相关产品推荐
相关产品推荐

