django mysql行锁定_并发问题Model.get_或_create()和Django/MySQL应用程序中的表锁定...

过去几天,我一直在努力从Django应用程序中消除竞争条件。这个问题源于这样一个事实:我有几个模型,由于各种原因,我不能在数据库级别强制执行唯一性,但是我仍然希望确保某些模型只有一个实例具有特定的属性值。为此,我提出了以下Manager和QuerySet子类(为了简洁起见,我省略了一些实用方法定义):from __future__ import unicode_literals

import logging, os

from contextlib import contextmanager

from django.db import (models, connections, router, transaction,

IntegrityError, NotSupportedError, ProgrammingError)

from django.utils.functional import cached_property

logger = logging.getLogger(__name__)

class LockingQuerySet(models.QuerySet):

"""

This is a custom QuerySet class to implement the actual get_or_create

logic.

"""

def get_or_create(self, defaults=None, **kwargs):

lookup, params = self._extract_model_params(defaults, **kwargs)

# Note that what I really want to do here is self.get

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值