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。这是一个小坑,本人记录一下。

  • 相关阅读:
    C
    大数模板
    51Nod 1040 最大公约数之和
    欧拉函数
    51Nod 1384 全排列
    B
    A
    B. Mancala (Codeforces Round #478 (Div. 2))
    I
    Requests 入门
  • 原文地址:https://www.cnblogs.com/zhuchunyu/p/11227130.html
Copyright © 2011-2022 走看看