psycopg2:通过一个查询插入多行
发布于 2021-02-02 23:16:22
我需要用一个查询插入多行(行数不是常数),所以我需要像这样执行查询:
INSERT INTO t (a, b) VALUES (1, 2), (3, 4), (5, 6);
我知道的唯一方法是
args = [(1,2), (3,4), (5,6)]
args_str = ','.join(cursor.mogrify("%s", (x, )) for x in args)
cursor.execute("INSERT INTO t (a, b) VALUES "+args_str)
但我想要一些更简单的方法。
关注者
0
被浏览
84
1 个回答
-
我构建了一个程序,该程序将多行插入到位于另一个城市的服务器上。
我发现使用此方法的速度大约是的10倍
executemany
。就我而言,tup是一个包含约2000行的元组。使用此方法大约花了10秒钟:args_str = ','.join(cur.mogrify("(%s,%s,%s,%s,%s,%s,%s,%s,%s)", x) for x in tup) cur.execute("INSERT INTO table VALUES " + args_str)
使用此方法需要2分钟:
cur.executemany("INSERT INTO table VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s)", tup)