gpt4 book ai didi

python - 为什么连接器/Python 不执行许多优化插入?

转载 作者:行者123 更新时间:2023-11-29 05:09:56 27 4
gpt4 key购买 nike

我正在使用连接器/Python 将许多行插入到 mysql 中的临时表中。这些行都在列表列表中。我这样执行插入:

cursor = connection.cursor();
batch = [[1, 'foo', 'bar'],[2, 'xyz', 'baz']]
cursor.executemany('INSERT INTO temp VALUES(?, ?, ?)', batch)
connection.commit()

我注意到(当然有更多的行)性能非常差。使用 SHOW PROCESSLIST,我注意到每个插入都是单独执行的。但是文档https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-executemany.html说这应该优化为 1 个插入。怎么回事?

最佳答案

回答其他人不会经历我必须经历的调试!

我编写的查询是根据我们代码中使用准备语句并使用“?”的其他查询建模的。来表示参数。但是对于 executemany(),您不能这样做!它必须使用“%s”。更改为以下内容:

cursor.executemany('INSERT INTO temp VALUES(%s,%s,%s)', batch)

...导致速度提高了百倍,并且可以使用 SHOW PROCESSLIST 查看优化的单个查询。当心标准'?语法!

关于python - 为什么连接器/Python 不执行许多优化插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41175862/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com