sql >> Base de Datos >  >> RDS >> PostgreSQL

Apuntar a valores específicos de la API JSON e insertarlos en Postgresql, usando Python

Primero, extrae ids en una lista de tuplas:

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

Luego use la función extras.execute_values():

from psycopg2 import extras

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

El segundo argumento de la función executemany(query, vars_list) debe ser una secuencia mientras data es un objeto a cuyos elementos no se puede acceder mediante índices enteros.

Debido al rendimiento, la primera función ejecuta una única consulta con varios argumentos, mientras que la segunda ejecuta tantas consultas como argumentos.

Tenga en cuenta que, de forma predeterminada, el tercer argumento de execute_values() es una lista de tuplas, por lo que extrajimos ids solo de esta manera.

Si tiene que insertar valores en más de una columna, cada tupla de la lista debe contener todos los valores de una sola fila insertada, por ejemplo:

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)