Python 使用ABC作为SQLAlchemy模型的基础

Python 使用ABC作为SQLAlchemy模型的基础,python,python-3.x,sqlalchemy,Python,Python 3.x,Sqlalchemy,我想使用抽象基类作为SQLAlchemy模型的声明基类 以下列ABC为例: from abc import ABCMeta, abstractmethod class DealMeta(ABCMeta): pass class DealBase(metaclass=DealMeta): """ """ def __init__(self, valuation_model): self.valuation_model = valuation_

我想使用抽象基类作为SQLAlchemy模型的声明基类

以下列ABC为例:

from abc import ABCMeta, abstractmethod


class DealMeta(ABCMeta):
    pass


class DealBase(metaclass=DealMeta):
    """
    """
    def __init__(self, valuation_model):
        self.valuation_model = valuation_model

    @abstractmethod
    def create(self):
        """
        """
        raise NotImplementedError()

    @property
    def valuation(self):
        return self.valuation_model.get_valuation(self)
以及以下模型:

from sqlalchemy import Column, Integer, Float, String
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base(cls=DealBase)


class Deal(Base):
    __tablename__ = "deals"

    # columns
    deal_name = Column(String)
    customer_name = Column(String)

    def __init__(self, **kwargs):
        # Call the constructur
        super(Deal, self).__init__(**kwargs)

    def create(self):
        pass
这将返回以下错误:

导入
Deal
时,我收到以下错误:

TypeError:元类冲突:派生类的元类必须是其所有基元类的(非严格)子类

我对这个错误感到困惑。哪个元类必须在这里被子类化

我如何正确地做到这一点