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

本文翻译自 https://stackoverflow.com/questions/26231819/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 python sqlalchemy alembic


相关文章:

python - python何时复制添加到全局字典的本地列表?

python - Python垃圾收集器文档[关闭]

python - 使用Matplotlib更改图形中的颜色以绘制熊猫数据框

python - 使用Flask-SQLAlchemy批量插入

mysql - 跟踪关系数据库表中的随机列数据更改

python - Alembic自动生成空Flask-SQLAlchemy迁移

python - Alembic:如何更改主键字段的长度?

python - 如何使用Alembic / SQLAlchemy将表对象实例化为bulk_insert行

python - 将numpy数组从VBA移动到Python并返回

python - SQLAlchemy Core:按命令排序