gpt4 book ai didi

python - 在 Django 1.8 中手动提交

转载 作者:太空狗 更新时间:2023-10-30 02:19:27 26 4
gpt4 key购买 nike

如何在 Django 1.8 中实现 @commit_manually

我正在尝试升级 Django 1.5 代码以与 Django 1.8 一起使用,并且由于某些奇怪的原因,commit_manually 装饰器在 Django 1.6 中被删除,没有直接替换。我的流程迭代了数千条记录,因此它不能在不耗尽内存的情况下将整个流程包装在一个事务中,但它仍然需要将一些记录分组在一个事务中以提高性能。为此,我有一个用 @commit_manually 包装的方法,它每 N 次迭代调用一次 transaction.commit()。

我无法从 docs 中确定,但这似乎仍然得到支持。我只需要调用 set_autocommit(False) 而不是使用方便的装饰器。这是正确的吗?

最佳答案

是的,你已经明白了。调用 set_autocommit(False) 开始一个事务,然后调用 commit()set_autocommit(True) 来提交它。

您可以将其包装在您自己的装饰器中:

def commit_manually(fn):
def _commit_manually(*args, **kwargs):
set_autocommit(False)
res = fn(*args, **kwargs)
commit()
set_autocommit(True)
return res
return _commit_manually

关于python - 在 Django 1.8 中手动提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29831976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com