Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django原子请求是如何工作的?_Python_Django_Atomic_Django Database - Fatal编程技术网

Python Django原子请求是如何工作的?

Python Django原子请求是如何工作的?,python,django,atomic,django-database,Python,Django,Atomic,Django Database,我希望我的Django视图是原子的。我的意思是,如果视图中有2个DB写入,我想要0个写入,或者2个写入 例如: def test_view(request): ''' A test view from views.py ''' MyClass.objects.create() raise Exception("whatever") MyClass.objects.create() DATABASES = { 'default': { '

我希望我的Django视图是原子的。我的意思是,如果视图中有2个DB写入,我想要0个写入,或者2个写入

例如:

def test_view(request):
    ''' A test view from views.py '''

    MyClass.objects.create()
    raise Exception("whatever")
    MyClass.objects.create()
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'mydatabase',
        'USER': 'mydatabaseuser',
        'PASSWORD': 'mypassword',
        'HOST': '127.0.0.1',
        'PORT': '5432',
        'ATOMIC_REQUESTS': True,
    }
}
我在文档中发现的内容似乎很有希望:

在web上处理事务的一种常见方法是包装每个请求 在交易中。在的配置中将原子_请求设置为True 要为其启用此行为的每个数据库

它是这样工作的。在调用视图函数之前,Django启动 交易如果生成的响应没有问题,Django 提交事务。如果视图生成异常,Django 回滚事务

但是,即使我设置了
ATOMIC\u REQUESTS=True
,当调用
test\u view()
时,也会创建第一个MyClass对象!我错过了什么


注意:我正在使用Django 1.7,原子_请求是数据库连接设置dict的一个属性,而不是顶级设置。例如:

def test_view(request):
    ''' A test view from views.py '''

    MyClass.objects.create()
    raise Exception("whatever")
    MyClass.objects.create()
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'mydatabase',
        'USER': 'mydatabaseuser',
        'PASSWORD': 'mypassword',
        'HOST': '127.0.0.1',
        'PORT': '5432',
        'ATOMIC_REQUESTS': True,
    }
}

您在哪里设置了
原子请求
值?什么是
自动提交
值?