Extrahieren Sie zuerst ids
in eine Liste von Tupeln:
ids = list((item['id'],) for item in data['issues'])
# example ids: [('41508',), ('41509',)]
Als nächstes verwenden Sie die Funktion extras.execute_values():
from psycopg2 import extras
query = """
INSERT into Countries (revenue)
VALUES %s;
"""
extras.execute_values(cursor, query, ids)
Das zweite Argument der Funktion executemany(query, vars_list)
sollte eine Sequenz sein, während data
ist ein Objekt, auf dessen Elemente nicht durch Integer-Indizes zugegriffen werden kann.
Aus Leistungsgründen führt die erste Funktion eine einzelne Abfrage mit mehreren Argumenten aus, während die zweite so viele Abfragen wie Argumente ausführt.
Beachten Sie, dass standardmäßig das dritte Argument von execute_values()
ist eine Liste von Tupeln, also haben wir ids
extrahiert nur so.
Wenn Sie Werte in mehr als eine Spalte einfügen müssen, sollte jedes Tupel in der Liste alle Werte für eine einzelne eingefügte Zeile enthalten, Beispiel:
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)