使用pymysql的executemany目的是想利用bulkinert机制来提高插入大量数据的效率。
比如我这里往aliyun的rds中插入条股票预测数据
居然用了13秒
然后我用insert循环插入条数据,结果差不多。
有些人说是rds慢,所以我得先排除这个问题。实际上不是的,而是executemany根本就没有提高效率!有人看过源代码,说是executemany内部也是循环调用insert。我没有看源代码,因为那解决不了问题。
我用的方法是,把条数据拼起来,做成一个超长的字符串
insertintotable(字段1,字段2,...字段n)values(值1,值2....值n),(值1,值2....值n),....(值1,值2....值n);
一共个(值1,值2....值n),
然后直接用execute就可以了,结果非常满意!
只用了0.09s就搞定了
这个后面的值有长度极限吗?我自己尝试了0条数据,完全没问题,倒是拼接花了不少时间。那么如果数据量再大怎么办,那么我想可能要用loaddata之类的办法了。