两个SQLAlchemy声明性模型必须共享相同的declarative_base()吗?

joe*_*ker 5 python orm sqlalchemy

如果两个SQLAlchemy模型declarative_base()必须参与相同的会话,是否有必要从同一个实例继承?导入两个或多个定义SQLAlchemy模型的模块时可能就是这种情况.

from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class SomeClass(Base):
    __tablename__ = 'some_table'
    id = Column(Integer, primary_key=True)
    name =  Column(String(50))

Base2 = declarative_base()

class AnotherClass(Base2):
    __tablename__ = 'another_table'
    id = Column(Integer, primary_key=True)
    name =  Column(String(50))
Run Code Online (Sandbox Code Playgroud)

Den*_*ach 5

我在单个会话中成功地使用了不同的声明性基础。这在使用多个数据库时非常有用:每个库都是使用自己的元数据创建的,并且每个元数据都绑定到单独的数据库。您的某些声明性基础可以定义其他方法,或者可以使用另一个元类来安装扩展。