我在SQLAlchemy中使用声明式,并希望创建一个与另一个列相同的类,但是由不同的表支持,例如:
Base = declarative_base()
class Foo(Base):
__tablename__ = 'foo'
id = Column(Integer, primary_key=True)
a = Column(Text)
b = Column(Text)
class Bar(Base):
__tablename__ = 'bar'
id = Column(Integer, primary_key=True)
a = Column(Text)
b = Column(Text)
在这个例子中,我想以这样一种方式创建类Bar,即对Foo列集的任何更改都会反映在Bar中。这些数据之间没有关系,所以我不认为继承是正确的方法。
这有意义吗?
答案 0 :(得分:6)
对两种型号使用通用mixin:
class CommonModel(Base):
__abstract__ = True
id = Column(Integer, primary_key=True)
a = Column(Text)
b = Column(Text)
class Foo(CommonModel):
__tablename__ = 'foo'
class Bar(CommonModel):
__tablename__ = 'bar'