【发布时间】:2013-01-12 19:51:28
【问题描述】:
我已经阅读了 Django 事务并打算在我的项目中使用它,但这里有几个我想知道的问题。实际上我希望在注册时使用事务,我在注册时在 2-3 个地方插入,所以我希望如果任何查询失败,则不应该执行插入。所以根据 Django 文档,我想我需要使用commit_on_success 类型的事务。
但我想知道这些事务是依赖于数据库还是都是 Django 内部的?我是否需要为它更改数据库存储引擎?如果我必须在不同的存储引擎甚至未来不同的数据库(例如 SQL 中的一个表和 nosql 中的一个表)上使用它怎么办?还是这无关紧要?
如果我会像这样使用它:
from django.db import transaction
def function1():
#code here without transaction
@commit_on_success
def function2():
#code here with transaction
如果所有方法代码都成功,那么函数 2 将与提交一起工作,但函数 1 在导入事务之前会发生什么? function1 将应用什么类型的事务?我希望 function1 没有任何事务,但在其他模型代码中工作时表现正常,那么我该怎么办?
所以我的问题是,如果没有交易但只有一种交易方法,该怎么办?它会通过使用装饰器和其他方法正常工作还是我需要做其他事情?这些事务是否也依赖于数据库和数据库存储引擎(如 InnoDB)?这些事务只是 Django 内部事务吗?
【问题讨论】:
标签: django django-models transactions