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

如何搭建一个企业子账号网站如何设置中国建设银行网站

如何搭建一个企业子账号网站,如何设置中国建设银行网站,汉中网站建设服务,建设银行网站 开户行怎么查询Django 默认的事务行为是自动提交#xff0c;除非事务正在执行#xff0c;否则每个查询将会马上自动提交到数据库。 1. 全局开启事务 在 Web 里#xff0c;处理事务比较常用的方式是将每个请求封装在一个事务中。 在你想启用该行为的数据库中#xff0c;把 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 transactiontransaction.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(statusHTTP_202_ACCEPTED, data{msg: insert success})视图请求trans2被 transaction.non_atomic_requests 装饰不受全局事务配置的控制。class AuthorViewSet(viewsets.ModelViewSet):serializer_class AuthorDetailSerializertransaction.non_atomic_requestsaction(methodspost, detailFalse)def trans(self, request):serializer self.get_serializer(datarequest.data)if serializer.is_valid(raise_exceptionTrue):valid_data serializer.validated_dataAuthorDetail.objects.create(**valid_data)return Response(statusHTTP_202_ACCEPTED, data{msg: insert success})DRF的视图函数即使被 transaction.non_atomic_requests 装饰但是依旧被全局事务配置所控制所以说 non_atomic_requests 仅作用于视图本身时才会生效。2 局部开启事务 Django项目中局部开启事务可以借助于transaction.atomic方法。使用它我们就可以创建一个具备原子性的代码块一旦代码块正常运行完毕所有的修改会被提交到数据库。反之如果有异常更改会被回滚。 两种方式对某个请求使用事务 class AuthorViewSet(viewsets.ModelViewSet):serializer_class AuthorDetailSerializertransaction.atomicaction(methodspost, detailFalse)def trans(self, request):serializer self.get_serializer(datarequest.data)if serializer.is_valid(raise_exceptionTrue):valid_data serializer.validated_dataAuthorDetail.objects.create(**valid_data)return Response(statusHTTP_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(statusHTTP_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], detailFalse) # detailFalse or True: True: 系统会自动在生成的路由中添加pk值def trans(self, request):serializer self.get_serializer(datarequest.data)if serializer.is_valid(raise_exceptionTrue):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(statusHTTP_202_ACCEPTED, data{msg: insert success})4. 事务嵌套 事务嵌套只有内外两层的事务都执行成功那么事务才能最终被成功提交。如果内层事务执行失败那么外层的事务也会失败事务最终会提交失败。 class AuthorDetailViewSet(viewsets.ModelViewSet):serializer_class AuthorDetailSerializerqueryset AuthorDetail.objects.all()transaction.atomic # 外层事务的执行成功与否除了它本身外还依赖于内层事务执行成功与否。action(methods[post], detailFalse) # detailFalse or True: True: 系统会自动在生成的路由中添加pk值def trans(self, request):serializer self.get_serializer(datarequest.data)if serializer.is_valid(raise_exceptionTrue):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(statusHTTP_202_ACCEPTED, data{msg: insert success})最终我们查得数据库的记录1和记录2都没有入库。
http://www.yutouwan.com/news/501256/

相关文章:

  • 广东微信网站推广哪家专业seo网站优化服务
  • 面向搜索引擎网站建设wordpress文章模型插件
  • pc网站建设怎么弄南京软件网站建设公司
  • 做娱乐新闻的网站有哪些成都公司注册流程完整版
  • 建筑工程找活网站wordpress主题教程 pdf
  • 哈尔滨网站建设王道下拉強做外贸用什么社交网站
  • 网站搭建手机郑州网站关键字优化
  • 做网站用c 还是php合肥专业做淘宝网站推广
  • 优质服务的网站建设无锡网络推广
  • 哈尔滨门户网站建设做网站开发有前途么
  • 山东企业建站系统信息梅州新农村建设网站
  • 做网页引用别的网站的视频企业网站的基本类型包括
  • flash互动网站开发中国世界500强企业排名
  • 现在最长用的做网站软件是什么哪些网站可以做淘宝客
  • 廊坊网站备案海南房产网
  • 玉环县建设局网站廊坊百度快照优化哪家服务好
  • 制作一号店网站网站要钱吗?
  • 网站建设的作用有哪些方面wordpress媒体库 下载
  • 权威的手机排行榜网站郑州网站建设乛汉狮网络
  • 借款网站模板无极分期网站
  • 网站主机要怎么做镇江房地产网站建设
  • 网站建设+用ftp上传文件网站定制
  • 论坛网站开发开题报告开发工程师的岗位要求
  • 做网站建设的电话销售渭南网站建设公司
  • 怎么做区块链网站电子商务网站主要功能
  • 网站收录了但是搜索不到大庆小程序制作
  • 学校网站建设费用大淘客平台怎么做分销网站
  • wordpress建站服务湖南网站建设价格费用
  • 增塑剂网站建设徐州网站制作
  • 当前网站开发用什么软件网址大全怎么删除