sql >> Database >  >> RDS >> PostgreSQL

Specifieke waarden van JSON API targeten en in Postgresql invoegen met Python

Extraheer eerst ids in een lijst met tuples:

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

Gebruik vervolgens de functie extras.execute_values():

from psycopg2 import extras

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

Het tweede argument van de functie executemany(query, vars_list) moet een reeks zijn terwijl data is een object waartoe elementen niet kunnen worden benaderd door integer-indexen.

Vanwege de prestaties voert de eerste functie een enkele query uit met meerdere argumenten, terwijl de tweede evenveel query's als argumenten uitvoert.

Merk op dat standaard het derde argument van execute_values() is een lijst met tuples, dus we hebben ids . geëxtraheerd gewoon op deze manier.

Als u waarden in meer dan één kolom moet invoegen, moet elke tuple in de lijst alle waarden bevatten voor een enkele ingevoegde rij, bijvoorbeeld:

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)


  1. Oracle maakt db-link met behulp van een proxyschema

  2. Laravel join met 3 tafels

  3. Hoe MySQL 8 op Ubuntu te installeren

  4. Hoe meerdere joins met verschillende parameters in een enkele query uit te voeren