psycopg2:通过一个查询插入多行
我需要用一个查询插入多行(行数不是常数),所以我需要像这样执行查询:
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)
但我想要一些更简单的方法。
回答:
我构建了一个程序,该程序将多行插入到位于另一个城市的服务器上。
我发现使用此方法的速度大约是的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)
以上是 psycopg2:通过一个查询插入多行 的全部内容, 来源链接: utcz.com/qa/420994.html