SQLAlchemy中有一种方法可以复制表定义吗?

7

我正在使用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个回答

8

为两个模型使用一个通用的混合器:

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'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接