ell*_*987 5 python database sqlalchemy
我正在致力于为多个数据库模式实现 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)
Run Code Online (Sandbox Code Playgroud)
如果我现在想引入一个新属性 Person 列“height”,该属性仅存在于一个架构中而不存在于另一个架构中,那么如何在重用现有 Person 列定义的同时定义它?
到目前为止,我已经尝试使用声明性 mixin 来定义通用功能,然后将它们混合到从不同特定于模式的基础继承的类中。然而,这是不能令人满意的,因为即使大多数相同的模型也必须声明为 mixin,并且为 schema 声明一次声明类(从适当的基类和 mixin 继承)。鉴于模式相似,这看起来像是很多样板代码。
有更好的方法吗?