SQLAlchemy的批量插入
昨天在过滤一张表,插入到另外一张表的时候,由于有 1200 万条需要插入的数据,不得不找一找批量插入的方法。在此记录一下,以防以后再用到。
本质上,就是要最后生成这种,一次插入批量的 SQL
1 | INSERT INTO 表名称 VALUES (值1, 值2,....) |
在 SQLAlchemy 中,如果使用connection.execute()
的话,就是这么一句话:
1 | conn.execute(MyTable.insert(), [{'color': 'blue'}, |
构造一个由字典组成的 list。
实际使用的时候,注意控制一下这个 list 的大小。别吃爆了内存。同时也防止 MySQL 单个请求过大的问题。
实际简单记了一下速度,没批量之前,每分钟只能插入 2.5 万条左右。改成批量插入,一次插入 10000 条,速度达到 80 万/分钟。效果十分明显。