如何在不同的数据库模式中重用sqlalchemy声明性模型

2024-04-26 12:17:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为多个数据库模式实现一组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-column'height',它只存在于一个模式中,而不存在于另一个模式中,那么如何在重用现有的Person列定义的同时定义它呢?在

然后尝试从mixin中继承这些特定的声明性基,然后使用mixin定义这些特定的类。然而,这并不令人满意,因为即使是大多数相同的模型也必须声明为mixin,并且声明类也必须为schema声明一次(继承自适当的基和mixin)。考虑到模式是相似的,这看起来像是很多样板代码。在

有更好的方法吗?在


Tags: 代码from模型import数据库声明basestring