Django事务处理

1.默认情况 是autocommit方式

save()或者delete()即提交

2.通过增加 Transaction 中间件来实现自动的事务支持。我感觉这个是非常方便的做法。使用它,你首先需要在 settings.py 中增加一个中间件的设置:

MIDDLEWARE_CLASSES = (
“django.middleware.common.CommonMiddleware”,
“django.middleware.sessions.SessionMiddleware”,
“django.middleware.cache.CacheMiddleware”,
“django.middleware.transaction.TransactionMiddleware”,
)

但要注意,这个设置与其它的中间件的顺序是有关的。所以置于 TransactionMiddleware 之后的中间件也将受事务的控制。因此,如果把 session 中间件放在 Transaction 之后,它也会受到影响。不过文档上说 Cache 没有关系,因为它使用自已内部的数据库处理。

那么只要设置这个中间件之后,事务机制就自动生效了。你不需要在 View 代码中做特殊的处理。只要一个 View 在 Response 返回成功,事务就自动提交。一旦出现异常,事务就回滚。太方便了。

3. 自已来控制事务

如果你不喜欢 django 为你实现的这种事务方式,你还可以自已来控制事务,这时你可以不安装 TransactionMiddleware中间件了。基本上都是通过 decorator 来实现的,即在每个View函数前加上decorator的修饰。比如:

@transaction.autocommit
就是实现了缺省状态的事务处理,即碰上 save() 或 delete() 就自动提交。
@transaction.commit_on_success
当整个view成功后提交事务,否则回滚,这与 TransactionMiddleware提供的方式是一样的。
@transaction.commit_manually
这是最手动的方式。你需要显示地调用commit或rollback。
具体的例子参见 Transaction 文档。

此种方式需要引用transaction
即from django.db import transaction


阅读更多
个人分类: python
上一篇文本框里的内容垂直居中
下一篇生成SSL证书
想对作者说点什么? 我来说一句

django+python教程

2009年05月16日 3.38MB 下载

django学习pdf

2017年10月17日 1.17MB 下载

Django安装包 web框架

2009年04月14日 7.51MB 下载

DjangoDjango

2009年06月27日 14KB 下载

.net 事务处理总结

2009年07月28日 7KB 下载

没有更多推荐了,返回首页

关闭
关闭