关于orm映射后对数据表进行批量添加

情景介绍

为了促进用户消费,增加使用,产品决定上线一波优惠券。

不是xx宝,x信已有的优惠券功能。

这涉及到一个问题。

我们需要往数据表里面一次性大量主动添加数据,创建优惠券对应优惠码。


1.最不动脑袋的办法。

for循环配合db.session.add()。

假设你需要生成1000个优惠码。

不可否认,用这个确实很简单,但是总觉得不够'好',因为add原本解决的就是单个添加的功能。

2.稍微思考的办法。

db.session.add_all()

add_all()中传入orm隐射的对象列表。

看似省略看for循环,但是我们看一下add_all()函数就可以发现问题


它内部帮你实现了for循环,实际上依旧是生成了1000次sql操作,依旧不合理。

3.最终选择的办法

db.session.bulk_insert_mappings(name, data)

bulk_insert_mappings 需要两个参数,第一个name为对应需要添加的数据表的morder类名,第二个data为列表,里面的每个元素是字典格式,列表的键为对应数据表的字段名。

他能将多次add操作处理为一个sql语句处理,时间方面大幅度优化(具体时间优化数据没做比较)

以上

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。