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

Wstawianie wielu wierszy za pomocą psycopg2

Aby skorzystać z metody execute, umieść dane do wstawienia na liście. Lista zostanie zaadaptowana przez psycopg2 do tablicy. Następnie rozpakowujesz tablicę i w razie potrzeby rzutujesz wartości

import psycopg2

insert = """
    insert into history ("timestamp")
    select value
    from unnest(%s) s(value timestamp)
    returning *
;"""

data = [('2014-04-27 14:07:30.000000',), ('2014-04-27 14:07:35.000000',)]
conn = psycopg2.connect("host=localhost4 port=5432 dbname=cpn")
cursor = conn.cursor()
cursor.execute(insert, (data,))
print cursor.fetchall()
conn.commit()
conn.close()

Nie jestem pewien, czy różnica w wydajności od executemany będzie znacząca. Ale myślę, że powyższe jest ładniejsze. returning klauzula, jak sama nazwa wskazuje, zwróci wstawione krotki.

BTW timestamp jest słowem zastrzeżonym i nie powinno być używane jako nazwa kolumny.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL 9.4 - Użyj operatora niestandardowego w ograniczeniu EXCLUDE

  2. Podwójny cudzysłów w nazwie tabeli w zapytaniu wybierającym PostgreSQL

  3. Wartość Postgres SSLMode wymaga nieważności, gdy obsługa protokołu SSL nie jest skompilowana przy użyciu zewnętrznego opakowania danych

  4. Jak pogrupować wyniki według liczby relacji?

  5. Postgres UUID JDBC nie działa