Tout d'abord, extrayez les ids
dans une liste de tuples :
ids = list((item['id'],) for item in data['issues'])
# example ids: [('41508',), ('41509',)]
Utilisez ensuite la fonction extras.execute_values() :
from psycopg2 import extras
query = """
INSERT into Countries (revenue)
VALUES %s;
"""
extras.execute_values(cursor, query, ids)
Le deuxième argument de la fonction executemany(query, vars_list)
devrait être une séquence tandis que data
est un objet dont les éléments ne sont pas accessibles par des index entiers.
Pour des raisons de performances, la première fonction exécute une seule requête avec plusieurs arguments, tandis que la seconde exécute autant de requêtes que d'arguments.
Notez que par défaut le troisième argument de execute_values()
est une liste de tuples, nous avons donc extrait ids
juste de cette façon.
Si vous devez insérer des valeurs dans plusieurs colonnes, chaque tuple de la liste doit contenir toutes les valeurs d'une seule ligne insérée, par exemple :
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)