相关疑难解决方法(0)

Django ORM中的每事务隔离级别

是否可以为自定义事务设置隔离级别(但不能使用原始sql)?

例如,类似于:

with transaction.commit_on_success(isolation='SERIALIZABLE'):
    bla
Run Code Online (Sandbox Code Playgroud)

python django transactions django-orm

16
推荐指数
1
解决办法
1360
查看次数

使用Django和PostgreSQL进行事务(@atomic)的默认隔离级别

我想知道将Django与PostgreSQL数据库一起使用时的默认隔离级别是什么.可序列化隔离?(https://www.postgresql.org/docs/9.1/static/transaction-iso.html#XACT-SERIALIZABLE)

有一个关于MySQL的讨论(mysql和postgresql中的Django事务隔离级别),但尽管它的名字似乎没有讨论PostgreSQL

谢谢!

django postgresql transactions atomic

4
推荐指数
2
解决办法
1335
查看次数

在 Django 中启用单个事务的脏读

我正在 Django 中构建一个 REST API,用户可以在其中运行对象任务。我在下面创建了一个简单的示例,在该示例中,我使用事务轻松回滚对象的状态,以防任务失败。

from django.db import IntegrityError, transaction

def send_object(id):
    obj = MyModel.objects.get(pk=id)
    if obj.state != 'Created':
        raise ValueError('Object not in state "Created"')
    with transaction.atomic():
        obj.state = 'Sending'
        obj.save()

        # send the object...

        obj.state = 'Sent'
        obj.save()
Run Code Online (Sandbox Code Playgroud)

现在,我希望在任务运行时,用户可以通过 API 看到对象的状态。由于事务在任务完成之前不会提交,因此用户只能看到任务之前和之后的当前状态。

我需要某种事务,以防在任务期间发生系统故障/关闭并且对象卡在“发送”状态。必须重置状态,以便可以轻松重试任务。

隔离级别已设置为,READ COMMITTED并且在不更新代码其他部分的情况下无法更改。

我可以在提交事务之前使新状态可用(即启用脏读)吗?或者还有什么我可以做的吗?

django transactions task

3
推荐指数
1
解决办法
595
查看次数

标签 统计

django ×3

transactions ×3

atomic ×1

django-orm ×1

postgresql ×1

python ×1

task ×1