【发布时间】:2018-05-31 04:24:31
【问题描述】:
我在设置事务隔离级别时遇到问题。我想要最严格的可序列化,而默认是已提交的。
我正在使用:
Django==1.10.6
psycopg2==2.5.1
在 Heroku 上运行。
根据文档: https://docs.djangoproject.com/en/1.10/ref/databases/#isolation-level
我有以下settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
},
'OPTIONS': {
'isolation_level': psycopg2.extensions.ISOLATION_LEVEL_SERIALIZABLE,
}
}
if on_heroku:
DATABASES['default'] = dj_database_url.config()
查看代码如下:
@require_http_methods(["POST"])
@transaction.atomic
@login_required()
def api_test_add_one(request):
cursor = connection.cursor()
cursor.execute('SHOW default_transaction_isolation')
logger.info("aa: " + str(cursor.fetchone()))
return HttpResponse("{}", content_type="application/json")
输出是:
aa: (u'read committed',)
我在访问同一个端点的同时运行了不同的测试,在 DB 中增加一个整数并确认事务没有被隔离。
【问题讨论】:
标签: django postgresql