Para usar o método execute coloque os dados a serem inseridos em uma lista. Uma lista será adaptada pelo psycopg2 para um array. Então você desaninha a matriz e lança os valores conforme necessário
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()
Não tenho certeza se a diferença de desempenho de executemany será significativa. Mas eu acho que o acima é mais puro. O
returning
cláusula irá, como o nome sugere, retornar as tuplas inseridas. BTW
timestamp
é uma palavra reservada e não deve ser usada como nome de coluna.