Primeiro, extraia
ids
em uma lista de tuplas:ids = list((item['id'],) for item in data['issues'])
# example ids: [('41508',), ('41509',)]
Em seguida, use a função extras.execute_values():
from psycopg2 import extras
query = """
INSERT into Countries (revenue)
VALUES %s;
"""
extras.execute_values(cursor, query, ids)
O segundo argumento da função executemany(query, vars_list) deve ser uma sequência enquanto
data
é um objeto cujos elementos não podem ser acessados por índices inteiros. Por causa do desempenho, a primeira função executa uma única consulta com vários argumentos, enquanto a segunda executa tantas consultas quanto argumentos.
Observe que, por padrão, o terceiro argumento de
execute_values()
é uma lista de tuplas, então extraímos ids
apenas desta forma. Se você precisar inserir valores em mais de uma coluna, cada tupla da lista deverá conter todos os valores de uma única linha inserida, exemplo:
values = list((item['id'], item['key']) for item in data['issues'])
query = """
INSERT into Countries (id, revenue)
VALUES %s;
"""
extras.execute_values(cur, query, values)