PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Targeting di valori specifici dall'API JSON e inserimento in Postgresql, utilizzando Python

Innanzitutto, estrai ids in un elenco di tuple:

ids = list((item['id'],) for item in data['issues'])
# example ids: [('41508',), ('41509',)]

Quindi usa la funzione extras.execute_values():

from psycopg2 import extras

query = """
    INSERT into Countries (revenue)
    VALUES %s;
"""
extras.execute_values(cursor, query, ids)

Il secondo argomento della funzione executemany(query, vars_list) dovrebbe essere una sequenza mentre data è un oggetto a cui non è possibile accedere agli elementi tramite indici interi.

A causa delle prestazioni, la prima funzione esegue una singola query con più argomenti, mentre la seconda esegue tante query quanti sono gli argomenti.

Nota che per impostazione predefinita il terzo argomento di execute_values() è un elenco di tuple, quindi abbiamo estratto ids proprio in questo modo.

Se devi inserire valori in più di una colonna, ogni tupla nell'elenco dovrebbe contenere tutti i valori per una singola riga inserita, ad esempio:

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)