我有三个数据库,我想在一个请求中向事务中添加数据。
例如我的代码。
EXEC EDOC_RETRIEVE_S2 '','','','','','',0,'pls,I,cant','',''
结果:
问题:为什么交易在这里不起作用?我该怎么做才能获得工作交易?
(我尝试使用其他方式,但没有取得成功) (我也理解它不是很好的代码,但对于理解这个问题非常简单)
Django 1.7.7 Python 2.7
数据库: 默认 - postgres db_one - mysql db_two - mysql
答案 0 :(得分:2)
Django 1.6中的transaction.commit_manually
装饰器was deprecated。您应该切换到Django的新事务管理。
我认为您不需要手动提交事务,您可以嵌套transaction.atomic
。
def my_view(request):
try:
with transaction.atomic(using='default'):
with transaction.atomic(using='db_one'):
with transaction.atomic(using='db_two'):
MyModel_one(...).save(using='default')
MyModel_two(...).save(using='db_one')
MyModel_three(...).save(using='db_two') # raises exception
except IntegrityError:
return ...
return ...