首页 > 解决方案 > mongoDB 和 MySQL 的一个事务,具有一对多关系

问题描述

我的 Django 应用程序同时使用 MySQL 和 MongoDB 来存储其数据。

我需要创建一个事务来从 MySQL 和 MongoDB 中删除一个具有其关系的实例。如果其中一个查询的执行失败(SQL 或 Mongo),我必须回滚所有已执行的查询。那可能吗?

例子:

from django.db import models

class Car(models.Model):
    manufacturer = models.ForeignKey('Manufacturer',on_delete=models.CASCADE)
    # ...

    def delete(self, *args, **kwargs):
        ...
        # delete from mongoDB (must use a session to support multi document tr
        return super(Car, self).delete(*args, **kwargs)

class Motorcycle(models.Model):
    manufacturer = models.ForeignKey('Manufacturer',on_delete=models.CASCADE)
    # ...

    def delete(self, *args, **kwargs):
        ...
        # delete from mongoDB (must use a session to support multi document tr
        return super(Motorcycle, self).delete(*args, **kwargs)

class Manufacturer(models.Model):
    # ...
    pass

    def delete(self, *args, **kwargs):
        ...
        # delete from mongoDB (must use a session to support multi document transaction)
        return super(Manufacturer, self).delete(*args, **kwargs)

当我删除制造商时,我需要从 MySQL 和 MongoDB 中删除相关的汽车和摩托车。如果一个事务失败(假设删除其中一辆摩托车由于某种原因失败),我需要回滚所有事务。

有什么办法吗?

标签: pythondjangopymongo

解决方案


推荐阅读