PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Kierowanie na określone wartości z JSON API i wstawianie do Postgresql za pomocą Pythona

Najpierw wyodrębnij ids na listę krotek:

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

Następnie użyj funkcji extras.execute_values():

from psycopg2 import extras

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

Drugi argument funkcji executemany(query, vars_list) powinna być sekwencją, podczas gdy data jest obiektem, do którego elementów nie można uzyskać dostępu za pomocą indeksów całkowitych.

Ze względu na wydajność pierwsza funkcja wykonuje jedno zapytanie z wieloma argumentami, podczas gdy druga wykonuje tyle zapytań, ile argumentów.

Zauważ, że domyślnie trzeci argument execute_values() to lista krotek, więc wyodrębniliśmy ids właśnie w ten sposób.

Jeśli musisz wstawić wartości do więcej niż jednej kolumny, każda krotka na liście powinna zawierać wszystkie wartości dla jednego wstawionego wiersza, na przykład:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mapowanie typu szeregowego PostgreSQL z adnotacjami Hibernate

  2. odpowiednik connect_by_root w postgresie

  3. Nie można odszyfrować za pomocą pgcrypto z AES-256-CBC, ale AES-128-CBC jest OK

  4. Concat wiersze w Postgres

  5. Jak usunąć częściowo/całkowicie nakładające się zdarzenia ze znacznikami czasu rozpoczęcia i zakończenia z danych wyjściowych zapytania?