Първо извлечете ids
в списък с кортежи:
ids = list((item['id'],) for item in data['issues'])
# example ids: [('41508',), ('41509',)]
След това използвайте функцията extras.execute_values():
from psycopg2 import extras
query = """
INSERT into Countries (revenue)
VALUES %s;
"""
extras.execute_values(cursor, query, ids)
Вторият аргумент на функцията executemany(query, vars_list)
трябва да бъде последователност, докато data
е обект, чиито елементи не могат да бъдат достъпни чрез целочислени индекси.
Поради производителността първата функция изпълнява една заявка с множество аргументи, докато втората изпълнява толкова заявки, колкото и аргументи.
Имайте предвид, че по подразбиране третият аргумент на execute_values()
е списък от кортежи, така че извлякохме ids
само по този начин.
Ако трябва да вмъкнете стойности в повече от една колона, всеки кортеж в списъка трябва да съдържа всички стойности за един вмъкнат ред, например:
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)