zoukankan      html  css  js  c++  java
  • 关于django中的get_or_create方法的坑

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

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

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

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

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

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

    坚持不一定成功,但放弃必定失败。
  • 相关阅读:
    三个问题
    2014-7
    2014-5
    2014-2
    2014-1
    2013-11
    mysql中对表操作----为所有列插入数据
    Redis做消息队列
    收集Nginx-access,Nginx-error日志
    .Nginx安装filebeat收集日志:
  • 原文地址:https://www.cnblogs.com/bao9687426/p/12208881.html
Copyright © 2011-2022 走看看