【问题标题】:Taking list of changed data from API, and inserting it into a database with other unchanged data PYTHON从 API 中获取已更改数据的列表,并将其与其他未更改数据 PYTHON 一起插入到数据库中
【发布时间】: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


    【解决方案1】:

    您可以直接进行转换(无需data_changeresult):

    values = list((item['id'],
                   item['key'],
                   severity.get(item['status'], item['status'])
                   ) for item in data_table['issues'])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-18
      • 1970-01-01
      • 2018-09-06
      • 2021-10-06
      • 2019-03-30
      • 1970-01-01
      相关资源
      最近更新 更多