【问题标题】:method = 'multi' not working on the sqlalchemy package in python方法='multi'不适用于python中的sqlalchemy包
【发布时间】:2020-10-23 12:38:51
【问题描述】:

我目前使用 sqlalchemy 包,我安装的包是 1.3.16。我的python版本是3.6.7。我可以使用 sqlalchemy 和 to_sql 将小型数据集写入 SQL 服务器,但是当我尝试将 1.1M 行数据集写入 sql 服务器时,需要几个小时。从我的在线研究中,我看到 sqlalchemy 具有可选参数 method='multi' 选项。但是当我使用它时,我得到了错误,'to_sql' 没有参数'method'。这是我的代码。如果我使用没有“方法”参数的相同代码,它可以工作,但速度很慢。

import sqlalchemy
import math

input_num_of_cols=len(input.columns)
chunknum=math.floor(2000/input_num_of_cols)

engine = create_engine("mssql+pyodbc://@CRSQLDEV04") 
conn = engine.connect()

input.to_sql('Input',con=conn,chunksize=chunknum, method = 'multi', if_exists = 'append', index = False, schema = 'ABC.dbo')

知道我使用的是 sqlalchemy 包吗?还是我的 python 版本?

提前致谢,拉梅什

【问题讨论】:

  • 更重要的是你使用的pandas版本。
  • 您的问题解决了吗?
  • 好的,非常感谢您的回复。

标签: python sql pandas performance sqlalchemy


【解决方案1】:

正如@Gord 简要提到的,在这种情况下,重要的是pandas 的版本。

从 0.24.0 开始,pandas.to_sql() 中有一个方法参数,您可以在其中定义自己的插入函数或只使用 method='multi' 告诉 pandas 在单个 INSERT 查询中传递多行,这使得它很多更快。

只要确保您拥有正确的 pandas 版本,即高于 0.24.0 的任何版本

【讨论】:

  • 感谢您的回复。现在快得多了。谢谢,
  • @RameshArumugam 如果此答案有助于解决您的问题,请单击答案旁边的复选标记将其标记为已接受。请参阅here 了解更多信息
猜你喜欢
  • 2021-03-09
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-17
  • 1970-01-01
相关资源
最近更新 更多