爬虫数据executemany插入_Python3.SQLAlchemy1.3提高的SQLSever插入速度

cd8598b0ea0d05605bdc2b0037de7b67.png

<pandas.DataFrame>to_sql()方法导入数据库很方便,但是比较慢(参考另一篇具体插入方法)。在最近一次大量数据导入SQLSever时让我尤其不耐烦,尝试过给to_sql()方法传入method="multi"​不知道为啥竟然报错了。

 百度pandas to_sql 加速的结果只有一篇利用sqlalchemycopy_from方法加速PostgreSQL数据插入的教程,但是对于SQLSever并不适用。

 但是终于还是被我找到了!

4d4e30ca9ae8d6c22f208b313c73e2a3.png

 是的,只要在用sqlalchemycreate_engine函数时传入fast_executemany=True参数就可以大大提高SQLSever插入速度,原来要花5分钟现在只要5秒钟,爽歪歪。

 但是要注意的是当设置fast_executemany=True时,同样不要指定to_sql()method。根据官方文档,默认的method是一行一行地插入,而method="multi"​是一条SQL语句插入所有数据, 而结果和想象中有些不一样。所以优化方案交给底层,咱不要瞎操心了吧。


 这个新参数实际上并不是create_engine自己的,而是将传给底层pyodbc库的,所以直接搜还真很难搜到,我是在stackoverflow上一个类似问题底下最后一个新回答发现的,感动得我立即注册账号给他点赞(遗憾的是新人好像点不了赞)。

06bbd0531c34d4a28c15da10aecf54cf.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值