Pertama, ekstrak ids
ke dalam daftar tupel:
ids = list((item['id'],) for item in data['issues'])
# example ids: [('41508',), ('41509',)]
Selanjutnya gunakan fungsi extras.execute_values():
from psycopg2 import extras
query = """
INSERT into Countries (revenue)
VALUES %s;
"""
extras.execute_values(cursor, query, ids)
Argumen kedua dari fungsi executemany(query, vars_list)
harus berupa urutan saat data
adalah objek yang elemennya tidak dapat diakses oleh indeks bilangan bulat.
Karena kinerjanya, fungsi pertama mengeksekusi satu kueri dengan beberapa argumen, sedangkan yang kedua mengeksekusi kueri sebanyak argumen.
Perhatikan, bahwa secara default argumen ketiga execute_values()
adalah daftar tupel, jadi kami mengekstrak ids
hanya dengan cara ini.
Jika Anda harus memasukkan nilai ke lebih dari satu kolom, setiap tupel dalam daftar harus berisi semua nilai untuk satu baris yang disisipkan, contoh:
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)