Um die Methode execute zu verwenden, platzieren Sie die einzufügenden Daten in einer Liste. Eine Liste wird von psycopg2 an ein Array angepasst. Dann entschachteln Sie das Array und wandeln die Werte nach Bedarf um
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()
Ich bin mir nicht sicher, ob der Leistungsunterschied zu executemany signifikant sein wird. Aber ich denke, das oben ist ordentlicher. Der returning
-Klausel gibt, wie der Name schon sagt, die eingefügten Tupel zurück.
BTW timestamp
ist ein reserviertes Wort und sollte nicht als Spaltenname verwendet werden.