【发布时间】:2020-04-14 02:00:24
【问题描述】:
我目前正在尝试稍微调整一些脚本的性能,似乎瓶颈始终是使用 pandas to_sql 函数实际插入数据库 (=MSSQL)。
其中一个因素是 mssql 的参数限制为 2100。
我与 sqlalchemy 建立了连接(具有 mssql + pyodbc 风格):
engine = sqlalchemy.create_engine("mssql+pyodbc:///?odbc_connect=%s" % params, fast_executemany=True)
插入时我使用块大小(所以我保持在参数限制和 method="multi" 以下):
dataframe_audit.to_sql(name="Audit", con=connection, if_exists='append', method="multi",
chunksize=50, index=False)
我不知道具体是怎么想的:
- 不一致似乎源于 DB 服务器本身
- 更大的块大小似乎并不能转化为更好的性能(似乎反过来!?)
- 也许我应该从 pyodbc 切换到 turbodbc(根据一些帖子,它会产生更好的性能)
有什么想法可以让我的 DataFrame 获得更好的插入性能?
【问题讨论】:
标签: python sql-server pandas sqlalchemy pyodbc