PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Targeting bestimmter Werte aus der JSON-API und Einfügen in Postgresql mithilfe von Python

Extrahieren Sie zuerst ids in eine Liste von Tupeln:

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

Als nächstes verwenden Sie die Funktion extras.execute_values():

from psycopg2 import extras

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

Das zweite Argument der Funktion executemany(query, vars_list) sollte eine Sequenz sein, während data ist ein Objekt, auf dessen Elemente nicht durch Integer-Indizes zugegriffen werden kann.

Aus Leistungsgründen führt die erste Funktion eine einzelne Abfrage mit mehreren Argumenten aus, während die zweite so viele Abfragen wie Argumente ausführt.

Beachten Sie, dass standardmäßig das dritte Argument von execute_values() ist eine Liste von Tupeln, also haben wir ids extrahiert nur so.

Wenn Sie Werte in mehr als eine Spalte einfügen müssen, sollte jedes Tupel in der Liste alle Werte für eine einzelne eingefügte Zeile enthalten, Beispiel:

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)