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

Inserimento di più righe utilizzando psycopg2

Per utilizzare il metodo di esecuzione inserire i dati da inserire in un elenco. Un elenco verrà adattato da psycopg2 a un array. Quindi annulli l'annidamento dell'array e trasmetti i valori secondo necessità

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()

Non sono sicuro se la differenza di prestazioni rispetto a executemany sarà significativa. Ma penso che quanto sopra sia più ordinato. Il returning La clausola, come suggerisce il nome, restituirà le tuple inserite.

A proposito timestamp è una parola riservata e non deve essere utilizzata come nome di colonna.