有没有办法在SQLAlchemy中复制表定义?

时间:2014-07-22 16:15:50

标签: python sqlalchemy

我在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中。这些数据之间没有关系,所以我不认为继承是正确的方法。

这有意义吗?

1 个答案:

答案 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'