For at bruge execute-metoden skal du placere de data, der skal indsættes, på en liste. En liste vil blive tilpasset af psycopg2 til et array. Derefter unnester du arrayet og kaster værdierne efter behov
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()
Ikke sikker på, om præstationsforskellen fra executemany vil være signifikant. Men jeg synes ovenstående er pænere. Den returning
klausul vil, som navnet antyder, returnere de indsatte tupler.
BTW timestamp
er et reserveret ord og bør ikke bruges som et kolonnenavn.