当前位置: 首页 > news >正文

本校网站建设公司网站域名续费一年多少钱

本校网站建设,公司网站域名续费一年多少钱,wordpress外链缩略图不显示,长沙疫情最新消息风险等级Django 默认的事务行为是自动提交,除非事务正在执行,否则每个查询将会马上自动提交到数据库。 1. 全局开启事务 在 Web 里,处理事务比较常用的方式是将每个请求封装在一个事务中。 在你想启用该行为的数据库中,把 settings 配置…

Django 默认的事务行为是自动提交,除非事务正在执行,否则每个查询将会马上自动提交到数据库。

1. 全局开启事务

在 Web 里,处理事务比较常用的方式是将每个请求封装在一个事务中。 在你想启用该行为的数据库中,把 settings 配置数据库中的参数 ATOMIC_REQUESTS 设置为 True。

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'testdb', 'USER': 'root',  'PASSWORD': '123', 'HOST': '127.0.0.1',     'PORT': 3306,  'ATOMIC_REQUESTS': True  # 全局开启事务,和http请求的整个过程绑定在一起}
}

它是这样工作的:在调用视图方法前,Django 先生成一个事务。如果响应能正常生成,Django 会提交该事务。而如果视图出现异常,Django 则会回滚该事务。

如果你全局开启了事务,你仍然可以使用 non_atomic_requests 装饰器让某些视图方法不受事务控制,但需要注意的是,该装饰器仅作用于视图本身时才会生效,在DRF的viewset中不生效。

from django.db import transaction@transaction.non_atomic_requests
def trans2():valid_data_test = {'gender': "male", 'birth': '2020-10-01', 'tele': 18812341234, 'addr': '南京市雨花台区'}res_test = AuthorDetail.objects.create(**valid_data_test)res_test += 1return Response(status=HTTP_202_ACCEPTED, data={"msg": "insert success"})视图请求trans2被 @transaction.non_atomic_requests 装饰,不受全局事务配置的控制。
class AuthorViewSet(viewsets.ModelViewSet):serializer_class = AuthorDetailSerializer@transaction.non_atomic_requests@action(methods='post', detail=False)def trans(self, request):serializer = self.get_serializer(data=request.data)if serializer.is_valid(raise_exception=True):valid_data = serializer.validated_dataAuthorDetail.objects.create(**valid_data)return Response(status=HTTP_202_ACCEPTED, data={"msg": "insert success"})DRF的视图函数即使被 @transaction.non_atomic_requests 装饰,但是依旧被全局事务配置所控制,所以说 non_atomic_requests 仅作用于视图本身时才会生效。

2 局部开启事务

Django项目中局部开启事务,可以借助于transaction.atomic方法。使用它我们就可以创建一个具备原子性的代码块,一旦代码块正常运行完毕,所有的修改会被提交到数据库。反之,如果有异常,更改会被回滚。

两种方式对某个请求使用事务:

class AuthorViewSet(viewsets.ModelViewSet):serializer_class = AuthorDetailSerializer@transaction.atomic@action(methods='post', detail=False)def trans(self, request):serializer = self.get_serializer(data=request.data)if serializer.is_valid(raise_exception=True):valid_data = serializer.validated_dataAuthorDetail.objects.create(**valid_data)return Response(status=HTTP_202_ACCEPTED, data={"msg": "insert success"})@transaction.atomic
def trans2():valid_data_test = {'gender': "male", 'birth': '2020-10-01', 'tele': 18812341234, 'addr': '南京市雨花台区'}res_test = AuthorDetail.objects.create(**valid_data_test)res_test += 1return Response(status=HTTP_202_ACCEPTED, data={"msg": "insert success"})

对请求中的某个代码块使用事务:

with transaction.atomic():AuthorDetail.objects.create(**valid_data_test)

3. 显式开启保存点

在事务操作中,我们还会经常显式地设置保存点(savepoint)。一旦发生异常或错误,我们使用savepoint_rollback方法让程序回滚到指定的保存点。如果没有问题,就使用savepoint_commit方法提交事务。

class AuthorDetailViewSet(viewsets.ModelViewSet):serializer_class = AuthorDetailSerializerqueryset = AuthorDetail.objects.all()@action(methods=["post"], detail=False)          # detail=False or True: True: 系统会自动在生成的路由中添加pk值def trans(self, request):serializer = self.get_serializer(data=request.data)if serializer.is_valid(raise_exception=True):valid_data = serializer.validated_dataAuthorDetail.objects.create(**valid_data)valid_data_test = {'gender': "male", 'birthday': '2020-10-01', 'telephone': 18812341234, 'addr': '南京市雨花台区'}valid_data_test2 = {'gender': "male", 'birthday': '2020-10-02', 'telephone': 18812341234, 'addr': '南京市雨花台区'}with transaction.atomic():AuthorDetail.objects.create(**valid_data_test)sid = transaction.savepoint()try:res_test2 = AuthorDetail.objects.create(**valid_data_test2)res_test2 += 1except Exception:transaction.savepoint_rollback(sid)print("error and rollback")transaction.savepoint_commit(sid)print("commit success")return Response(status=HTTP_202_ACCEPTED, data={"msg": "insert success"})

4. 事务嵌套

事务嵌套,只有内外两层的事务都执行成功,那么事务才能最终被成功提交。如果内层事务执行失败,那么外层的事务也会失败,事务最终会提交失败。

class AuthorDetailViewSet(viewsets.ModelViewSet):serializer_class = AuthorDetailSerializerqueryset = AuthorDetail.objects.all()@transaction.atomic		# 外层事务的执行成功与否,除了它本身外,还依赖于内层事务执行成功与否。@action(methods=["post"], detail=False)          # detail=False or True: True: 系统会自动在生成的路由中添加pk值def trans(self, request):serializer = self.get_serializer(data=request.data)if serializer.is_valid(raise_exception=True):valid_data = serializer.validated_dataAuthorDetail.objects.create(**valid_data)	# 记录1valid_data_test = {'gender': "male", 'birthday': '2020-10-01', 'telephone': 18812341234, 'addr': '南京市雨花台区'}with transaction.atomic():		# 故意让内层的事务执行失败res_test = AuthorDetail.objects.create(**valid_data_test)	# 记录2res_test += 1	return Response(status=HTTP_202_ACCEPTED, data={"msg": "insert success"})最终,我们查得数据库的记录1和记录2都没有入库。

文章转载自:
http://dinncoinvidiousness.zfyr.cn
http://dinncotranstage.zfyr.cn
http://dinncotriennial.zfyr.cn
http://dinncoabstinency.zfyr.cn
http://dinncovibrion.zfyr.cn
http://dinncotaedong.zfyr.cn
http://dinncopedagogue.zfyr.cn
http://dinncoaethereally.zfyr.cn
http://dinncofad.zfyr.cn
http://dinncoradioimmunological.zfyr.cn
http://dinncophantasm.zfyr.cn
http://dinncogallus.zfyr.cn
http://dinncobibliothetic.zfyr.cn
http://dinncocyanide.zfyr.cn
http://dinncomoonshiny.zfyr.cn
http://dinncobroody.zfyr.cn
http://dinncodraff.zfyr.cn
http://dinncooptional.zfyr.cn
http://dinncoclutch.zfyr.cn
http://dinncotabulation.zfyr.cn
http://dinncopyrosulphate.zfyr.cn
http://dinncocyder.zfyr.cn
http://dinncobeneficiation.zfyr.cn
http://dinncoduvetyne.zfyr.cn
http://dinncowhatsit.zfyr.cn
http://dinncoasynapsis.zfyr.cn
http://dinncoenlarge.zfyr.cn
http://dinncotrefoil.zfyr.cn
http://dinncostrawy.zfyr.cn
http://dinncounplagued.zfyr.cn
http://dinncoperiodic.zfyr.cn
http://dinncoconsentaneous.zfyr.cn
http://dinncoflakelet.zfyr.cn
http://dinncooxytone.zfyr.cn
http://dinncocollectorship.zfyr.cn
http://dinncovainness.zfyr.cn
http://dinnconina.zfyr.cn
http://dinncobaboonery.zfyr.cn
http://dinncosniffle.zfyr.cn
http://dinncoflotative.zfyr.cn
http://dinnconowackiite.zfyr.cn
http://dinncoym.zfyr.cn
http://dinncomovie.zfyr.cn
http://dinncoparallax.zfyr.cn
http://dinncophytol.zfyr.cn
http://dinncorubricate.zfyr.cn
http://dinncokooky.zfyr.cn
http://dinncoretaliation.zfyr.cn
http://dinncointercellular.zfyr.cn
http://dinncohaggle.zfyr.cn
http://dinncobooster.zfyr.cn
http://dinncoaerophagia.zfyr.cn
http://dinncocollembolan.zfyr.cn
http://dinncoacqierement.zfyr.cn
http://dinncoyaqui.zfyr.cn
http://dinnconuphar.zfyr.cn
http://dinncochaperon.zfyr.cn
http://dinncoibsenite.zfyr.cn
http://dinncoanimadversion.zfyr.cn
http://dinncoresupplies.zfyr.cn
http://dinncoeucaryote.zfyr.cn
http://dinncohindoostani.zfyr.cn
http://dinncoparachronism.zfyr.cn
http://dinncohardicanute.zfyr.cn
http://dinncomontonero.zfyr.cn
http://dinncomisalliance.zfyr.cn
http://dinncodisclaimer.zfyr.cn
http://dinncodirectrix.zfyr.cn
http://dinncoacl.zfyr.cn
http://dinncoearthbound.zfyr.cn
http://dinncolatinist.zfyr.cn
http://dinncocrunode.zfyr.cn
http://dinncomystify.zfyr.cn
http://dinncomarathonian.zfyr.cn
http://dinncohexasyllabic.zfyr.cn
http://dinncoparthenon.zfyr.cn
http://dinncocental.zfyr.cn
http://dinncostonewalling.zfyr.cn
http://dinncoseattle.zfyr.cn
http://dinncoundertint.zfyr.cn
http://dinncoseaworthy.zfyr.cn
http://dinncohegira.zfyr.cn
http://dinncofirstling.zfyr.cn
http://dinncovigneron.zfyr.cn
http://dinncoforficated.zfyr.cn
http://dinncoosb.zfyr.cn
http://dinncojacksnipe.zfyr.cn
http://dinncofeatherwit.zfyr.cn
http://dinncodekametric.zfyr.cn
http://dinncohelioscope.zfyr.cn
http://dinncorecognitory.zfyr.cn
http://dinncogammy.zfyr.cn
http://dinncoresonantly.zfyr.cn
http://dinncoseacopter.zfyr.cn
http://dinncofqdn.zfyr.cn
http://dinncoosteectomy.zfyr.cn
http://dinncokith.zfyr.cn
http://dinnconyasaland.zfyr.cn
http://dinncoectomorphic.zfyr.cn
http://dinncoindomitably.zfyr.cn
http://www.dinnco.com/news/87109.html

相关文章:

  • wordpress修改站点logo大小百度账号人工申诉
  • 长沙建一个网站大概要多少钱网络营销是什么工作
  • wordpress 限制登陆一键优化清理
  • 杭州房产网信息网官网长沙网站优化
  • 安阳网站建设报价百度网站排名优化价格
  • 默认网站预览能能显示建设中搜索引擎培训班
  • 公司的宣传网站应该怎么做网上宣传方法有哪些
  • 电商网站经营性备案经典广告语
  • 创建一个b2c网站得多少钱互联网销售是做什么的
  • 国外做蒸汽锅炉的网站乐陵市seo关键词优化
  • 网站建设公司转型做什百度推广怎么推
  • 百度站长资源管理seo研究中心道一老师
  • 一般什么行业做网站的多引流客户的最快方法是什么
  • 今天刚刚最新消息2023seo优化网站词
  • 梧州龙圩太原seo报价
  • wordpress建站 购物优化营商环境个人心得体会
  • 湖南湘潭疫情最新消息徐州seo外包公司
  • 广西两学一做网站数字营销策略有哪些
  • 南通市建设工程网站linux网站入口
  • 北京市密云县建设委员会网站域名被墙污染查询
  • 日本的设计网站有哪些自助建站系统开发
  • 最好的手表网站app线下推广怎么做
  • 网站将导航条不滚动怎么做成crm软件
  • 桂林北站附近的景点做网站推广一般多少钱
  • 网站建设实训企业培训课程视频
  • 系统下载网站源码查企业信息查询平台
  • 做图书馆网站软件关键词排名
  • 查询建设规范的网站网站排名优化工具
  • 做购物网站之前做些什么哪家竞价托管专业
  • 网站建设与管理就业网络搜索词排名