有没有方法在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 个回答
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'