Udtræk først ids
ind i en liste over tupler:
ids = list((item['id'],) for item in data['issues'])
# example ids: [('41508',), ('41509',)]
Brug derefter funktionen extras.execute_values():
from psycopg2 import extras
query = """
INSERT into Countries (revenue)
VALUES %s;
"""
extras.execute_values(cursor, query, ids)
Det andet argument for funktionen executemany(query, vars_list)
skal være en sekvens, mens data
er et objekt, som elementer ikke kan tilgås af heltalsindekser.
På grund af ydeevnen udfører den første funktion en enkelt forespørgsel med flere argumenter, mens den anden udfører lige så mange forespørgsler som argumenter.
Bemærk, at det tredje argument for execute_values()
som standard er en liste over tupler, så vi har udtrukket ids
bare på denne måde.
Hvis du skal indsætte værdier i mere end én kolonne, skal hver tuple på listen indeholde alle værdierne for en enkelt indsat række, eksempel:
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)