【问题标题】:Transaction does not work in django事务在 django 中不起作用
【发布时间】:2013-10-29 01:54:24
【问题描述】:

我想在我的django项目中使用事务,所以我建立一个视图来练习

views.py 中的代码:

@transaction.commit_manually
def test(request):
    import random
    wiki = Entry.objects.get(id=854)
    wiki.title = 'title-{}'.format(random.randrange(1,100))
    wiki.save()
    transaction.rollback()
    return HttpResponse('ok')

如你所见,我更新了wiki.title,然后我回滚了它,所以,在我看来,wiki.title不会更新到数据库,但实际上不是,我不知道为什么。

我的环境是 django 1.4.2,python 2.7,mysql 5.6.13

文档:https://docs.djangoproject.com/en/1.4/topics/db/transactions/

【问题讨论】:

  • 你选择了支持事务的表引擎吗?
  • 谢谢提醒,我用的是默认的表引擎MyISAM,不支持事务,我改成Innodb,问题解决了,再次感谢。

标签: django transactions


【解决方案1】:

我认为当您使用@transaction.commit_manually 装饰视图时,您必须显式调用transaction.commit(),请参阅:

https://docs.djangoproject.com/en/1.4/topics/db/transactions/#django.db.transaction.commit_manually

【讨论】:

    猜你喜欢
    • 2017-01-26
    • 1970-01-01
    • 2018-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多