我正在为多个数据库模式实现sqlalchemy声明模型集。这些数据库模式在表格设计中非常相似。我希望能够在每个模式的模型集中尽可能多地重用通用模型代码(列定义,关系等)。 (请注意,有问题的模式是99%相同。)
作为一个小例子:
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Integer, String
Base = declarative_base()
class Person(Base):
__tablename__ = 'person'
name = Column(String, primary_key=True)
age = Column(Integer)
如果我现在要引入一个新属性Person列' height'只存在于一个模式而不存在于另一个模式中,如何在重用现有Person列定义的同时进行定义?
到目前为止,我已尝试使用声明性mixins来定义通用功能,然后将这些功能混合到继承自不同架构特定基础的类中。但是,这并不令人满意,因为即使大多数相同的模型也必须声明为mixins,并且声明一个声明类用于模式(继承自相应的base和mixin)。鉴于模式类似,这似乎是很多样板代码。
有更好的方法吗?