使用to_sql()追加数据后返回1或-1的原因是什么?
关于pandas to_sql返回±1的解释
当你通过SQLAlchemy开启fast_executemany=True,并用pandas.DataFrame.to_sql()向MSSQL追加数据时,返回的1或-1是MSSQL ODBC驱动在批量插入模式下的特殊返回值,和pandas文档描述的“受影响行数”逻辑不一致:
1:表示批量插入成功执行,但驱动无法返回实际受影响的行数-1:表示批量插入操作完成,但过程中触发了非致命警告(比如数据截断、约束提示等),同样无法返回准确的行数
如果需要获取真实的受影响行数,可参考两种方案:
- 关闭
fast_executemany=True参数,切换回普通插入模式,但会降低批量插入的性能 - 在插入前后分别查询目标表的总行数,通过计算差值得到实际插入的行数
内容的提问来源于stack exchange,提问作者frank
相关产品推荐
相关产品推荐

