executeメソッドを使用するには、挿入するデータをリストに配置します。リストは、psycopg2によって配列に適合されます。次に、配列のネストを解除し、必要に応じて値をキャストします
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()
executemanyとのパフォーマンスの違いが重要かどうかはわかりません。しかし、私は上記がきちんとしていると思います。 returning
句は、その名前が示すように、挿入されたタプルを返します。
ところで、timestamp
は予約語であり、列名として使用しないでください。