python - SQLAlchemy(和Alembic)具体表继承而无需多态联合

原文 标签 python sqlalchemy alembic

我是SQLAlchmey的新手,我正在尝试实现以下对象/数据库表结构(也通过使用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自动生成,我得到一个错误,即BaseConfig没有表映射类-这是正确的,而且我真的没有看到向BaseConfig添加“多态联合”选项的原因,因为此类是通用的。
有什么建议么? (在带有south的Django中,此方法是开箱即用的,但在这里似乎不容易支持此行为)。

谢谢,

最佳答案

都可以使用MixIns(请阅读文档的Mixing in Columns部分),其中您的BaseConfig不子类Base,而实际表又子类化BaseBaseConfig

class BaseConfig(object):
    # ...

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


或只需使用__abstract__

class BaseConfig(Base):
    __abstract__ = True

相关文章:

python - Django:仅空白页

python - 使用alembic获取表值并更新到另一个表。

sqlalchemy - Alembic:如何向现有列添加唯一约束

python - 当出现故障或挂起时,如何确保关闭负载均衡器中的所有连接?

python - SSLv3警报与urllib2握手失败

python - 如何使用sqlalchemy核心api多次正确联接同一表?

python - sqlalchemy onupdate Query.update()的行为不一致

python - 使用SqlAlchemy获取TimeoutError

python - sqlalchemy:alembic批量插入失败:'str'对象没有属性'_autoincrement_column'

python - 从GCloud激活服务帐户