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

7 投票
1 回答
1972 浏览
提问于 2025-04-18 14:17

我在使用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'

撰写回答