两个SQLAlchemy声明模型必须共享相同的declarative_base()吗?
如果两个SQLAlchemy模型需要在同一个会话(Session)中一起使用,它们是否必须都继承自同一个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))
2 个回答
4
不同的基础类可以正常工作。
不过,当它们使用不同的数据库连接时,你需要小心。这种情况下,你不能在两个数据库之间进行连接查询——每次查询都必须只针对一个数据库。
5
我成功地在一个会话中使用了不同的声明性数据库。这在使用多个数据库时很有用:每个数据库都有自己的元数据,而这些元数据又和各自的数据库绑定在一起。你的一些声明性数据库可能会定义额外的方法,或者它们可能会使用其他的元类来安装扩展功能。