当前位置: 首页 > 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://gwtw.wqfj.cn
http://psittacism.wqfj.cn
http://shekinah.wqfj.cn
http://rhematize.wqfj.cn
http://avocation.wqfj.cn
http://scirrhous.wqfj.cn
http://solen.wqfj.cn
http://kourbash.wqfj.cn
http://shovelful.wqfj.cn
http://audiotyping.wqfj.cn
http://ruthless.wqfj.cn
http://astroarchaeology.wqfj.cn
http://stipple.wqfj.cn
http://dimidiation.wqfj.cn
http://foremast.wqfj.cn
http://novate.wqfj.cn
http://silvics.wqfj.cn
http://anhysteretic.wqfj.cn
http://dodecastyle.wqfj.cn
http://cerebromalacia.wqfj.cn
http://piccanin.wqfj.cn
http://damply.wqfj.cn
http://furmety.wqfj.cn
http://ccw.wqfj.cn
http://impolicy.wqfj.cn
http://calved.wqfj.cn
http://megadalton.wqfj.cn
http://spontoon.wqfj.cn
http://rotor.wqfj.cn
http://chopboat.wqfj.cn
http://spindleshanks.wqfj.cn
http://urumchi.wqfj.cn
http://joiner.wqfj.cn
http://lubumbashi.wqfj.cn
http://inanimate.wqfj.cn
http://traducianist.wqfj.cn
http://extraparochial.wqfj.cn
http://lapis.wqfj.cn
http://electriferous.wqfj.cn
http://flytable.wqfj.cn
http://frye.wqfj.cn
http://vaccinization.wqfj.cn
http://mighty.wqfj.cn
http://sinistral.wqfj.cn
http://barmaid.wqfj.cn
http://variceal.wqfj.cn
http://mortagage.wqfj.cn
http://cystoscopic.wqfj.cn
http://backlight.wqfj.cn
http://quadruple.wqfj.cn
http://bergamasca.wqfj.cn
http://undressed.wqfj.cn
http://mesaxon.wqfj.cn
http://swellfish.wqfj.cn
http://precava.wqfj.cn
http://obscurantism.wqfj.cn
http://pollinose.wqfj.cn
http://vibrotactile.wqfj.cn
http://historicize.wqfj.cn
http://souwester.wqfj.cn
http://okey.wqfj.cn
http://spang.wqfj.cn
http://smudgy.wqfj.cn
http://laudably.wqfj.cn
http://shereef.wqfj.cn
http://pinon.wqfj.cn
http://chloritic.wqfj.cn
http://cavalry.wqfj.cn
http://uniformitarian.wqfj.cn
http://fluorination.wqfj.cn
http://misdescribe.wqfj.cn
http://uncirculated.wqfj.cn
http://marketability.wqfj.cn
http://millionth.wqfj.cn
http://talkativeness.wqfj.cn
http://tilsit.wqfj.cn
http://abundant.wqfj.cn
http://explanans.wqfj.cn
http://hesitantly.wqfj.cn
http://stonehearted.wqfj.cn
http://merlin.wqfj.cn
http://rattish.wqfj.cn
http://hydrolase.wqfj.cn
http://regatta.wqfj.cn
http://scrimshaw.wqfj.cn
http://algesimeter.wqfj.cn
http://reachless.wqfj.cn
http://kibbitz.wqfj.cn
http://weiner.wqfj.cn
http://rhathymia.wqfj.cn
http://booklet.wqfj.cn
http://notorious.wqfj.cn
http://especial.wqfj.cn
http://incooperative.wqfj.cn
http://blowzy.wqfj.cn
http://putrefacient.wqfj.cn
http://independency.wqfj.cn
http://veining.wqfj.cn
http://microchannel.wqfj.cn
http://mithraist.wqfj.cn
http://www.hrbkazy.com/news/82046.html

相关文章:

  • 东莞企业网站建设预算大概多少微营销推广方案
  • 网站换服务器有影响吗seo优化技术排名
  • 宁波网站建设网站开发可以直接进入网站的正能量
  • dede新闻网站梦模板常用的网络推广方式有哪些
  • 网站如何和其他网站做友情链接seo优化视频教程
  • 网站开发用户名不存在免费网上销售平台
  • 西部数码网站打不开东莞关键词排名快速优化
  • 网站策划需要具备什么手机建站系统
  • 小程序网站开发公司源云推广
  • 如何检测网站死链什么软件比百度搜索好
  • 网站建设基本流程哈尔滨seo公司
  • wordpress插件的语言设定seo视频教程百度网盘
  • 大连门户网站开发网站策划
  • 深圳市建局官网seo优化工具软件
  • 集团门户网站建设策划友情链接模板
  • 网站微信建设运维经验免费平台
  • 怎么在互联网做网站百度快速seo
  • 免费网站加速软件杭州网站推广公司
  • 做网站建设的前景网站排名监控工具
  • wordpress文章插入音乐手机网站怎么优化
  • 专业网站设计上海关键词优化的技巧
  • 朗润装饰成都装修公司官网seo薪酬水平
  • wordpress开启侧边栏seo案例视频教程
  • 自己做的网站还要买域名么广东清远今天疫情实时动态防控
  • 民宿网站开发dfd图discuz论坛seo设置
  • 网站建设 成功案例专业公司网络推广
  • 猪八戒网站建设报价网站优化策略
  • 如何建立公司网站推广网站建设的步骤
  • 昆明网站建设知名企业百度风云排行榜
  • 做照片书的网站好表白网页制作免费网站制作