Skip to main content
 首页 » 编程设计

python之使用 Python REST API 在 JIRA 中创建问题和自定义字段

2025年05月04日9落叶无声

我正在使用 JIRA Python 模块,它是 REST API 的扩展,可以自动执行在 JIRA 中删除和创建问题的过程。我正在尝试在我的 python 脚本中使用“for”循环在 JIRA 中创建问题,该脚本使用我从另一个数据库收集的导入数据。我需要在创建问题时格式化字段,以便我拥有的数据可以与 JIRA 中的相应字段正确对齐。下面是我的 Python 代码,用于创建问题并将数据存储到 JIRA 中,这些数据存储在自定义变量中:

df 包含我想通过创建新问题输入到 JIRA 中的 13 列数据。每列代表 JIRA 中一个问题的不同字段。 JIRA 中创建的每个新问题都应该从每一列中获取信息:

from jira.client import JIRA 
import pandas as pd 
 
# Now we input the issues from the export.csv CSV file into the fields 
# of new issues that are being created in JIRA to replace the old ones that were  
# deleted 
 
df = pd.read_csv('C:\\Python27\\scripts\\export.csv') 
 
# Set the column names from the export.csv file equal to variables using the       
# pandas python module 
 
# Now do the actual loop to create new issues 
 
for row in df: 
    cqid = df['ClearQuest ID'] 
    summ = str(df.Summary) 
    datecreated = df['Date Created'] 
    dateresolved = df['Date Resolved'] 
    wistate = df['WI State'] 
    res = df.Resolution 
    affected = df['Affected version/s'] 
    fixed = df['Fix version/s'] 
    issue_type = df['Issue Type'] 
    priority = df.Priority 
    comments = str(df.Comments) 
    jira.create_issue(project={'key': 'DEL'}, wistate={'customfield_1001': 'WI State'}, res={'customfield_1001': 'Resolution'}, cqid={'customfield_1001': 'ClearQuest ID'}, datecreated={'customfield_1001': 'Date Created'}, dateresolved={'customfield_1001': 'Date Resolved'}, priority={'customfield_1001': 'Priority'}, fixed={'customfield_1001': 'Fixed Version'}, affected={'customfield_10004': 'affected'}, summary=summ, description=comments, issuetype={'name': 'Defect'}) 

它给出了错误:

JIRAError: HTTP 400: "{u'cqid': u"Field 'cqid' cannot be set. It is not on the   appropriate screen, or unknown.", u'wistate': u"Field 'wistate' cannot be set. It is not on the appropriate screen, or unknown.", u'dateresolved': u"Field 'dateresolved' cannot be set. It is not on the appropriate screen, or unknown.", u'res': u"Field 'res' cannot be set. It is not on the appropriate screen, or unknown.", u'datecreated': u"Field 'datecreated' cannot be set. It is not on the appropriate screen, or unknown.", u'affected': u"Field 'affected' cannot be set. It is not on the appropriate screen, or unknown.", u'fixed': u"Field 'fixed' cannot be set. It is not on the appropriate screen, or unknown."}" 

以下是在评论字段中创建的每个问题的 JIRA 中显示的一些示例数据:

问题 1:
0 南
1 发现Delta会泄露接收到的数据包...
2 每次断开连接时,Delta 都会重置 ...
3 南
4 它应该在 CP 采取 l... 时被记录下来
5 通过 BioMed 菜单升级 IDS 后,...
6 通过 BioMed 菜单升级 IDS 后,...
7 通过 BioMed 菜单升级 IDS 后,...
8 增加了 Fusion 堆大小和 SCC1 Initia...
9 使用 build 142+ 重新检查,在 Matt 交付后......
10 使用WPA2时,有EAPOL key echange go...
11 使用WPA2时,有EAPOL key echange go...
12 南
13 南
14 南 ...

我只希望每个问题都有自己的字符串值,而不是像这样显示索引号或 NaN:


第 1 期:
问题2:发现Delta会泄露接收到的数据包...
问题 3:每次断开连接时,Delta 都会重置 ... ...

请您参考如下方法:

您的代码的一个主要缺陷是您在循环之前分配数据。

df = pd.read_csv('C:\\Python27\\scripts\\export.csv') 
 
for row in df: 
    cqid = row['ClearQuest ID'] 
    summary = row.Summary 
    jira.create_issue(...) 

您很可能需要做这样的事情。

for row in df.values: 
    cqid , summary , value3, value4, value5 = row