我需要用一个查询插入多行(行数不是常量),所以我需要像这样执行查询:
INSERT INTO t (a, b) VALUES (1, 2), (3, 4), (5, 6);
Run Code Online (Sandbox Code Playgroud)
我知道的唯一方法是
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)
Run Code Online (Sandbox Code Playgroud)
但我想要一些更简单的方法.
我正在寻找将数百万个元组批量插入数据库的最有效方法.我正在使用Python,PostgreSQL和psycopg2.
我创建了一个很长的郁金香列表,应该插入到数据库中,有时使用几何修饰符Simplify.
这种天真的方式是使用字符串格式化INSERT语句列表,但我还读到了其他三种方法:
pyformat绑定样式进行参数化插入executemany在元组列表中使用,和COPY.似乎第一种方式是最有效的,但我很感激您的见解和代码片段告诉我如何正确地做到这一点.