当前位置: 首页 > 面试题库 >

psycopg2:通过一个查询插入多行

齐博厚
2023-03-14
问题内容

我需要用一个查询插入多行(行数不是常数),所以我需要像这样执行查询:

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)


 类似资料:
  • 为什么我在这里收到ORA-00918错误?在INSERT WHEN...THEN INTO...SELECT模式中可以选择的列数是否有限制? 注意:我使用的是Oracle 11.2.0.1.0,我试图在生产中执行的实际查询更加复杂,并且引用了其他表(使用“values”是不够的)。这只是简化的情况...

  • 问题内容: 我想编写脚本,具有对多个插入查询的功能。让我更好地解释一下。 我有一个html形式的输入。而且我有MySQL查询要插入到表中。所以我想让我的函数为“数量”次插入此查询。 例如要插入3次。有什么建议么? 问题答案: http://dev.mysql.com/doc/refman/5.5/zh- CN/insert.html

  • 问题内容: 假设我有两个表,并且 我想在一个查询中将来自某些输入的数据插入到表中,该怎么做? 请,如果可以做到,请解释语法。 问题答案: MySQL不支持在单个INSERT语句中进行多表插入。奇怪的是,Oracle是我所知道的唯一一个…

  • 问题内容: 您好,我正在制作一个在pdo中进行多次插入的类。 是这样的 搜索后,我发现我必须建立类似 然后用这个执行 ,其中是 问题是我还得到一个错误就如何解决呢? 这是我正在做的一小段。 问题答案: 避免并发症的简单方法是这样的 但是,这将多次执行该语句。因此,最好创建一个较长的单个查询来执行此操作。 这是我们如何执行此操作的示例。

  • 我总共有10行这样的 PHP 我正在尝试在一个查询中插入数据库中的所有记录?我如何在一个查询中插入数据库中的所有行?

  • 问题内容: 让我们假设我必须将一个包含许多fk的表插入到表中,只是为了在 错误的语句 下面进行解释: 因此,基本上要插入的值来自不同的子查询,是否有可能实现这种行为? 问题答案: