Nejprve extrahujte ids
do seznamu n-tic:
ids = list((item['id'],) for item in data['issues'])
# example ids: [('41508',), ('41509',)]
Dále použijte funkci extras.execute_values():
from psycopg2 import extras
query = """
INSERT into Countries (revenue)
VALUES %s;
"""
extras.execute_values(cursor, query, ids)
Druhý argument funkce executemany(query, vars_list)
by měla být sekvence while data
je objekt, ke kterému prvky nelze přistupovat pomocí celočíselných indexů.
Kvůli výkonu první funkce provede jeden dotaz s více argumenty, zatímco druhá provede tolik dotazů, kolik je argumentů.
Všimněte si, že ve výchozím nastavení je to třetí argument execute_values()
je seznam n-tic, takže jsme extrahovali ids
právě tímto způsobem.
Pokud musíte vložit hodnoty do více než jednoho sloupce, každá n-tice v seznamu by měla obsahovat všechny hodnoty pro jeden vložený řádek, příklad:
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)