我有三个数据库,我想根据一个请求在事务中向它们添加数据。
\n\n例如我的代码。
\n\n@transaction.commit_manually\ndef my_view(request):\n try:\n MyModel_one(...).save(using='default')\n MyModel_two(...).save(using='db_one')\n MyModel_three(...).save(using='db_two') # <-- for example we make exception here (duplicate data)\n except IntegrityError:\n transaction.rollback()\n transaction.rollback(using='db_one')\n transaction.rollback(using='db_two')\n return ...\n transaction.commit()\n transaction.commit(using='db_one')\n transaction.commit(using='db_two')\n return ...\nRun Code Online (Sandbox Code Playgroud)\n\n结果:
\n\n问题:为什么交易在这里不起作用?我该怎么做才能获得工作交易?
\n\n(我尝试使用其他方法,但没有成功)\n(而且我知道这不是漂亮的代码,但对于理解问题来说非常简单)
\n\nDjango 1.7.7\nPython 2.7
\n\n数据库:\n默认 \xe2\x80\x94 postgres\ndb_one \xe2\x80\x94 mysql\ndb_two \xe2\x80\x94 mysql
\n