【发布时间】:2014-04-27 08:43:12
【问题描述】:
根据psycopg2: insert multiple rows with one query,使用psycopg2的execute而不是executemany效率更高。其他人可以确认吗?
上述 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)))
会起作用的。
更新:
例如,我尝试将我传入执行 sql 语句:
insert into history (timestamp) values (%s),(%s);
使用以下元组:
(('2014-04-27 14:07:30.000000',), ('2014-04-27 14:07:35.000000',))
但我得到的只是错误:
没有要获取的结果
【问题讨论】:
-
你没有先尝试这个?
-
多值插入确实比
psycopg2中的executemany更有效,尽管只是在一定程度上——如果您在每个语句中插入数万行,内存使用就会成为问题.几百或几千的批次(如果行更小)就可以了。
标签: python postgresql psycopg2 python-db-api