我是SQLAlchmey的新手,我试图实现以下对象/ db表结构(也使用alembic):
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之间没有任何关系,也不需要共享的pk等。似乎使用" polymorphic_union "这里也不相关。
通过尝试运行alembic autogenerate我得到BaseConfig没有表映射类的错误 - 这是真的,我真的没有看到添加"多态联合的原因#34; BaseConfig的选项,因为这个类是通用的。 有什么建议? (在Django与南方,这开箱即用,但似乎这种行为似乎不容易支持。)
谢谢, 李
答案 0 :(得分:6)
使用MixIns(阅读文档的Mixing in Columns部分),BaseConfig
执行不子类Base
,实际表将Base
子类化}和BaseConfig
:
class BaseConfig(object):
# ...
class MyModel(BaseConfig, Base):
# ...
或只需使用__abstract__
:
class BaseConfig(Base):
__abstract__ = True