gpt4 book ai didi

sql - 加快 Python 执行速度

转载 作者:行者123 更新时间:2023-12-03 20:19:44 28 4
gpt4 key购买 nike

我将数据从一个数据库插入到另一个数据库,所以我有 2 个连接(Conn1 和 Conn2)。下面是代码(使用pypyodbc)。

 import pypyodbc

Conn1_Query = "SELECT column FROM Table"

Conn1_Cursor.execute(Conn1_Query)
Conn1_Data = Conn1_Cursor.fetchall()

Conn1_array = []

for row in Conn1_Data:
Conn1_array.append(row)

上面的部分运行得非常快。
 stmt = "INSERT INTO TABLE(column) values (?)"
Conn2_Cursor.executemany(stmt, Conn1_array)
Conn2.commit()

这部分非常慢。我还尝试执行 for 循环以使用 cursor.execute 一次插入每一行,但这也很慢。我做错了什么,我能做些什么来加快速度?谢谢参观。

认为我还应该补充说 Conn1 数据只有 ~50k 行。我在开头还有一些没有包含的设置代码,因为它与问题无关。插入大约需要 15 分钟。作为比较,将输出写入 csv 文件大约需要 25 秒。

最佳答案

是的,executemany在 pypyodbc 下为每一行发送单独的 INSERT 语句。它的作用就像制作个人 execute循环调用。鉴于 pypyodbc 不再处于积极开发阶段,这不太可能改变。

但是,如果您使用兼容的驱动程序,例如“ODB​​C Driver xx for SQL Server”并且您切换到 pyodbc,那么您可以使用它的 fast_executemany选项以显着加快插入速度。见 this answer更多细节。

关于sql - 加快 Python 执行速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36017070/

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