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

Målretning af specifikke værdier fra JSON API og indsættelse i Postgresql ved hjælp af Python

Udtræk først ids ind i en liste over tupler:

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

Brug derefter funktionen extras.execute_values():

from psycopg2 import extras

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

Det andet argument for funktionen executemany(query, vars_list) skal være en sekvens, mens data er et objekt, som elementer ikke kan tilgås af heltalsindekser.

På grund af ydeevnen udfører den første funktion en enkelt forespørgsel med flere argumenter, mens den anden udfører lige så mange forespørgsler som argumenter.

Bemærk, at det tredje argument for execute_values() som standard er en liste over tupler, så vi har udtrukket ids bare på denne måde.

Hvis du skal indsætte værdier i mere end én kolonne, skal hver tuple på listen indeholde alle værdierne for en enkelt indsat række, eksempel:

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. Fuldstændig afinstallere PostgreSQL 9.0.4 fra Mac OSX Lion?

  2. Er der en måde at deaktivere opdateringer/sletninger på, men stadig tillade triggere at udføre dem?

  3. Koden, når den køres, åbner jdbc-forbindelsen, men den udskriver ikke tabeldataene. Hvad er der galt med denne kode?

  4. Rails ActiveRecord - er der en måde at udføre operationer på tabeller uden et id?