zoukankan      html  css  js  c++  java
  • python-django中使用事务以及小坑

    django中使用事务

    一、导入事务模块

    from django.db import transaction
    

    二、对相应的业务进行事务操作

    1. 方式一:为整个函数进行事务操作

      @transaction.atomic
      def mysql_test():
      	'''该函数进行一些关于数据库的操作'''
      	pass
      
    2. 方式二:为部分代码进行事务操作

      # 视图函数
      def mysql_test(request):
          try:
          	with transaction.atomic():
              	# 一系列对数据库的操作
              	pass
      	except Exception:   # 最好具体的错误类型,捕捉具体的错误
              pass
      

    好了,上面就是关于django中使用事务的方式

    不过这里还是得提醒一下,mysql中INNODB存储引擎是支持事务的,MyISAM是不支持的!

    所以我们在settings.py文件中,关于mysql数据库,如果项目中需要使用到事务,那么就必须指定INNODB存储引擎。

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'root',
            'USER': 'root',
            'PASSWORD': 'root',
            'HOST': '127.0.0.1',
            'PORT': 3306,
            'OPTIONS': {
                "init_command": "SET storage_engine=INNODB",
            }
        }
    }
    

    如果忽略掉OPTIONS这个键值对的话,django给我们创建的表是MyISAM。这是一个小坑,本人记录一下。

  • 相关阅读:
    第十一周学习总结
    个人冲刺——(六)
    第二阶段冲刺—第二天
    软件工程第十四周总结
    第二阶段冲刺—第一天
    大道至简阅读笔记02
    输入法用户体验评价
    软件工程第十三周总结
    人机交互-水王
    大道至简阅读笔记01
  • 原文地址:https://www.cnblogs.com/zhuchunyu/p/11227130.html
Copyright © 2011-2022 走看看