sql >> Databáze >  >> RDS >> PostgreSQL

Cílení na konkrétní hodnoty z JSON API a vkládání do Postgresql pomocí Pythonu

Nejprve extrahujte ids do seznamu n-tic:

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

Dále použijte funkci extras.execute_values():

from psycopg2 import extras

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

Druhý argument funkce executemany(query, vars_list) by měla být sekvence while data je objekt, ke kterému prvky nelze přistupovat pomocí celočíselných indexů.

Kvůli výkonu první funkce provede jeden dotaz s více argumenty, zatímco druhá provede tolik dotazů, kolik je argumentů.

Všimněte si, že ve výchozím nastavení je to třetí argument execute_values() je seznam n-tic, takže jsme extrahovali ids právě tímto způsobem.

Pokud musíte vložit hodnoty do více než jednoho sloupce, každá n-tice v seznamu by měla obsahovat všechny hodnoty pro jeden vložený řádek, příklad:

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. jaký je nejlepší software pro kreslení ERD pro databázi mysql pro Windows

  2. Kde klauzule funguje, nefunguje na tinyint

  3. Matoucí chyba o chybějící levé závorce v příkazu SQL

  4. Jak úplně odebrat MySQL 5.7 z Windows