Extraheer eerst ids
in een lijst met tuples:
ids = list((item['id'],) for item in data['issues'])
# example ids: [('41508',), ('41509',)]
Gebruik vervolgens de functie extras.execute_values():
from psycopg2 import extras
query = """
INSERT into Countries (revenue)
VALUES %s;
"""
extras.execute_values(cursor, query, ids)
Het tweede argument van de functie executemany(query, vars_list)
moet een reeks zijn terwijl data
is een object waartoe elementen niet kunnen worden benaderd door integer-indexen.
Vanwege de prestaties voert de eerste functie een enkele query uit met meerdere argumenten, terwijl de tweede evenveel query's als argumenten uitvoert.
Merk op dat standaard het derde argument van execute_values()
is een lijst met tuples, dus we hebben ids
. geëxtraheerd gewoon op deze manier.
Als u waarden in meer dan één kolom moet invoegen, moet elke tuple in de lijst alle waarden bevatten voor een enkele ingevoegde rij, bijvoorbeeld:
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)