PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Ciblage de valeurs spécifiques à partir de l'API JSON et insertion dans Postgresql, à l'aide de Python

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)