Django批量覆盖更新实现示例
批量处理用户上传的数据
利用bulk_create
方法能够批量处理用户上传的数据, 面对大量的上传数据时, 能够提升数据入库的速度.
这时候, 如果上传的数据存在问题, 该怎么处理呢?
例如, 数据存在唯一性约束. 但用户上传的数据, 存在重复项.
这时候,有三种方式.
- 中断并回滚整个操作
- 忽略错误项, 继续其它项目的写入
- 覆盖原先数据.
前两种比较好实现.
psqlextra 插件实现
第三种,如果用的是PostgreSQL的话, 可以考虑用 psqlextra
插件来实现.
例如:
from psqlextra.manager import PostgresManager class Record(models.Model): student = models.ForeignKey(to=Person, on_delete=models.CASCADE, verbose_name='参考人') date = models.DateField(verbose_name='考核时间') class Meta: verbose_name = '考核成绩' verbose_name_plural = verbose_name unique_together = ("student", "date") objects = PostgresManager()
可以用下述方式, 实现批量覆盖更新:
from psqlextra.query import ConflictAction Record.objects.on_conflict( ['student', 'date'], ConflictAction.UPDATE ).bulk_insert( [ dict(student=1,date='2021-02-11'), dict(student=2,date='2021-03-11'), ] )
以上就是Django批量覆盖更新实现示例的详细内容,更多关于Django批量覆盖更新的资料请关注脚本之家其它相关文章!
相关文章
python使用beautifulsoup4爬取酷狗音乐代码实例
这篇文章主要介绍了python使用beautifulsoup4爬取酷狗音乐代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-12-12Python DataFrame设置/更改列表字段/元素类型的方法
今天小编就为大家分享一篇Python DataFrame设置/更改列表字段/元素类型的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-06-06python numpy中对ndarry按照index增删改查
这篇文章主要介绍了python numpy中对ndarry按照index增删改查,在numpy中的ndarry是一个数组,因此index就是位置下标,注意下标是从0开始,接下来一起进入下面文章了解详细内容吧2022-02-02Python Json模块中dumps、loads、dump、load函数介绍
本篇文章主要介绍了Python Json模块中dumps、loads、dump、load函数介绍,详细的介绍了这几种函数的用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2018-05-05安装python3的时候就是输入python3死活没有反应的解决方法
下面小编就为大家分享一篇安装python3的时候就是输入python3死活没有反应的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-01-01
最新评论