【发布时间】:2018-12-05 10:14:14
【问题描述】:
这个标题可能有点误导,但这就是我所在的地方
我的目标:
从 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---->List---->更改数据--->插入数据库,其余数据取自 API
问题:
我如何更改这个变量“结果”并能够通过“值”传递它而不需要每一行的整个列表
【问题讨论】:
标签: python postgresql psycopg2