码迷,mamicode.com
首页 > 其他好文 > 详细

关于django中的get_or_create方法的坑

时间:2020-01-18 14:22:21      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:xxx   不能添加   需求   添加   没有   font   测试的   class   线程安全   

最近在项目中发现了这样的一个坑,那就是我们的需求是不能添加一个相同的对象到数据库中,就通过某些字段的值组合成唯一值到数据库中去查找数据,如果没有找到对象,那就创建一条新的数据库记录,而刚好django又提供了这种方法,那就是get_or_create。可是在测试的时候发现会加入相同的对象。

而解决方法就是:其实我们可以从数据库级别来使这几个字段组合唯一,这样如果有重复的数据就会加不进去。

class Meta:
unique_together = (("xxx", "xxxx"),)

 先到数据库中找,找不到就创建。

但是为什么使用get_or_create方法就会可能失败呢?

因为get_or_create并不是线程安全的,在多线程得情况下,可能会创建相同数据的字段。

关于django中的get_or_create方法的坑

标签:xxx   不能添加   需求   添加   没有   font   测试的   class   线程安全   

原文地址:https://www.cnblogs.com/bao9687426/p/12208881.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!