Pour utiliser la méthode execute, placez les données à insérer dans une liste. Une liste sera adaptée par psycopg2 à un tableau. Ensuite, vous désimbriquez le tableau et castez les valeurs si nécessaire
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()
Je ne sais pas si la différence de performances par rapport à executemany sera significative. Mais je pense que ce qui précède est plus propre. Le returning
clause renverra, comme son nom l'indique, les tuples insérés.
BTW timestamp
est un mot réservé et ne doit pas être utilisé comme nom de colonne.