根據psycopg2: insert multiple rows with one query,使用psycopg2的execute而不是executemany會更加高效。其他人能證實嗎?使用psycopg2插入多行
以上的StackOverflow問題,建議使用mogrify創造的那種聲明:
INSERT INTO table VALUES (value1, value2), (value3, value4)
是否有可能使用常規execute函數生成這樣的說法?我認爲這種形式的東西
cursor.execute("""INSERT INTO table VALUES (%s, %s), (%s, %s)""", ((value1,value2),(value3,value4)))
會工作。
UPDATE:
舉例來說,我想我傳遞到執行SQL語句:
insert into history (timestamp) values (%s),(%s);
與如下因素元組:
(('2014-04-27 14:07:30.000000',), ('2014-04-27 14:07:35.000000',))
但我回來是錯誤:
no results to fetch
您沒有試試? –
多值插入確實比'psycopg2'中的'executemany'更高效,但只有一點 - 如果每條語句插入數以萬計的行,內存使用就成爲一個問題。幾百或幾千(如果行較小)的批次可以很好。 –