Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python mysql executemany()和commit与多个execute()和commit_Python_Mysql_Sql_Query Optimization_Sql Insert - Fatal编程技术网

Python mysql executemany()和commit与多个execute()和commit

Python mysql executemany()和commit与多个execute()和commit,python,mysql,sql,query-optimization,sql-insert,Python,Mysql,Sql,Query Optimization,Sql Insert,我目前正在编写代码,通过一个简单的python脚本将一组对象数据插入mysql数据库。我需要插入的行数大约为几千行。我希望能够尽快做到这一点,并想知道在一堆行上调用executeMany()然后调用commit(),与多次调用execute()然后调用commit(),两者之间是否存在性能差异。一次执行所有操作,并在过程结束时提交总是更有效提交会导致额外的处理,如果性能很重要,您不希望对每一行重复这些处理 执行的操作越多,性能优势就越大。另一方面,你需要考虑长期手术的副作用。例如,如果有多个进程

我目前正在编写代码,通过一个简单的python脚本将一组对象数据插入mysql数据库。我需要插入的行数大约为几千行。我希望能够尽快做到这一点,并想知道在一堆行上调用executeMany()然后调用commit(),与多次调用execute()然后调用commit(),两者之间是否存在性能差异。一次执行所有操作,并在过程结束时提交总是更有效<代码>提交会导致额外的处理,如果性能很重要,您不希望对每一行重复这些处理

执行的操作越多,性能优势就越大。另一方面,你需要考虑长期手术的副作用。例如,如果有多个进程同时插入,死锁的风险就会增加,尤其是出现重复密钥错误时。中间方法是分批插入。你可能想看看

MySQL文档中有一个有趣的部分是关于-以下是一些选择:

  • 加载数据
    语法是最快的可用选项

  • 使用多个
    值()
    列表也比运行多个
    插入要快得多


在python中,它应该是无关紧要的,因为数据必须在插入之前提交

所以execute和executemanybut之间应该没有什么区别,但正如前面所述

mysql主页也有

使用executemany()方法,无法在操作参数中指定要执行的多个语句。这样做会引发内部错误异常。考虑使用Exculter()以多=真代替。 因此,如果您对性能有疑问,您可以查看一下,它似乎要快一点,但需要时间才能正常工作