您需要的是多部分架构名称。
__table_args__如果您使用的是声明式,则可以使用并使用它来执行查询。由于您省略了表或模型定义,因此我将根据您的查询示例生成示例:
In [8]: class TableA(base): ...: __tablename__ = 'table_a' ...: __table_args__ = { ...: 'schema': 'database1.schema1' ...: } ...: id = Column(Integer, primary_key=True) ...: field1 = Column(Integer) ...: field2 = Column(Integer) ...:In [9]: class TableB(base): ...: __tablename__ = 'table_b' ...: __table_args__ = { ...: 'schema': 'database2.schema1' ...: } ...: id = Column(Integer, primary_key=True) ...: field1 = Column(Integer) ...: field2 = Column(Integer) ...:In [10]: q = session.query(TableA.field1, TableA.field2, TableB.field2). ...: join(TableB, TableA.field1 == TableB.field1)In [12]: q.statement.compile(dialect=mssql.dialect())Out[12]: <sqlalchemy.dialects.mssql.base.MSSQLCompiler at 0x7fa3886027b8>In [13]: print(_)SELECt database1.schema1.table_a.field1, database1.schema1.table_a.field2, database2.schema1.table_b.field2 FROM database1.schema1.table_a JOIN database2.schema1.table_b ON database1.schema1.table_a.field1 = database2.schema1.table_b.field1


