Django cursor.executemany 每个“executemany”的首选批处理大小是多少

问题描述

我使用以下代码通过扩展的“插入”进行批量插入。

    cursor = connections['default'].cursor()

    sql = "INSERT INTO %s (%s) VALUES ([xxx],[xxx],...) "

    step = 1000
    for l in range(0,len(values),step):
        s_values = values[l:l+step]
        cursor.executemany(sql,s_values)

我的问题是我是否有很多行要插入,例如 100,000:

我应该在一个查询中插入吗。

或者以固定步长调用多个executemany,例如1000。

我看了一些文章,建议用100。

我用要插入的 100,000 条记录测试我的代码。

一次执行多次比多次执行快。

我不知道该怎么办。不知道我是否错过了在这里理解的东西。

请帮忙评论。谢谢。

解决方法

MySQL 文档有助于详细说明:

在大多数情况下,executemany() 方法遍历参数序列,每次将当前参数传递给 execute() 方法。

对插入应用了优化:使用多行语法对参数序列给出的数据值进行批处理。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...