这个标题可能有点误导,但是这里是我所在的地方
我的目标:
从JIRA api中获取数据并将其推送到Postgresql数据库(使用psycopg2)。但是需要通过查找和替换来更改列的数据之一,然后获取该列表并将其与API中未更改的其他数据一起推入数据库。
我目前所拥有的:
所以我进行查找并替换为:
从需要更改的API数据创建列表。
data_change = list((item['status']) for item in data_table['issues'])
然后我创建字典以映射需要更改的内容。
severity = {
'Blocker': 'Emergency',
'Critical': 'High',
'Major': 'High',
'Moderate': 'Medium',
'Minor': 'Low',
'Trivial': 'Low'
}
然后我创建一个新列表,其中包含需要使用变量“结果”输入数据库的所有数据
result = [severity.get(e, e) for e in data_change]
因此,现在我需要获取此列表,并将其与其他数据一起推送到数据库。
def insert_into_table_epic(data_table):
query = """
INSERT into
table
(id, name, status)
VALUES
%s;
"""
values = list((item['id'],
item['name'],
result) for item in data_table['issues'])
extras.execute_values(cur, query, values)
conn.commit()
问题:
问题在于此行:
values = list((item['id'],
item['name'],
result) for item in data_table['issues'])
API有50个不同的“问题”,因此这会在每行中添加一个值,从而导致50行。我将“结果”作为值之一传递,但这将不起作用,因为该变量本身就是一个列表,并将为每一行插入整个列表。
我当时正在考虑向数据库中进行查询,该查询将在数据放入后进行查找和替换,但是想知道是否可以通过以下途径做到这一点:
API ---->列表---->更改数据--->使用从API获取的其余数据插入db
问题:
如何更改此变量的“结果”,并使其能够通过“值”传递而又不占用每一行的整个列表
答案 0 :(得分:1)
您可以直接进行转换(无需data_change
和result
):
values = list((item['id'],
item['key'],
severity.get(item['status'], item['status'])
) for item in data_table['issues'])