2014-10-07 54 views
1

我是新来SQLAlchmey,我试图实现以下目标/数据库表结构(通过使用蒸馏器以及)混凝土表继承:SQLAlchemy的(和蒸馏器)无多态性工会

class BaseConfig(Base): 
pk = Column(Integer, primary_key=True) 
name = Column(Unicode(150), nullable=False, unique=True) 
... 
# Lots of other general columns, such as description, display_name, creation time etc. 

我希望所有其他配置类继承自它的预定义栏:

class A(BaseConfig): 
    __tablename__ = "A" 
    column1 = Column... 
    column2 = Column... 

class B(BaseConfig): 
    __tablename__ = "B" 
    column1 = Column... 
    column2 = Column... 

BaseConfig表不是真正的表,只有拥有公共列一类。 除此之外 - A和B之间没有任何关系,也不需要共享包等。似乎使用“polymorphic_union”在这里也不相关。

试图运行alembic autogenerate我得到的错误,BaseConfig没有表映射类 - 这是真的,我真的没有看到一个理由添加“多态联合”选项BaseConfig,因为这个类是通用的。 有什么建议吗? (在Django中,这个方法在南方可以使用,但在这里似乎不容易支持这种行为)。

感谢, 李

回答

6

无论是使用混入(阅读文档的Mixing in Columns一部分),你的BaseConfigBase和实际表子类均BaseBaseConfig

class BaseConfig(object): 
    # ... 

class MyModel(BaseConfig, Base): 
    # ... 

OR只需使用__abstract__

class BaseConfig(Base): 
    __abstract__ = True 
+0

我用__abstract__ = True,正是我想要的。 – Lin 2014-10-07 11:03:39