from sqlalchemy import ( create_engine, Column, Integer, String, ) from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker Base1 = declarative_base() Base2 = declarative_base() class User(Base1): __tablename__ = 'users' id = Column(Integer, primary_key=True) user_name = Column(String(128), nullable=False, unique=True) email = Column(String(100), unique=True) status = Column(Integer, nullable=False) class Pegawai(Base2): __tablename__ = 'pegawai' id = Column(Integer, primary_key=True) nama = Column(String(64), nullable=False) no_hp = Column(String(22)) user_id = Column(Integer) db_url_1 = 'postgresql://sugiana:a@localhost/test' db_url_2 = 'postgresql://sugiana:a@localhost/test2' engine1 = create_engine(db_url_1) engine2 = create_engine(db_url_2) Base1.metadata.bind = engine1 Base2.metadata.bind = engine2 Base1.metadata.create_all() Base2.metadata.create_all() factory = sessionmaker(bind=engine1) db_session = factory() q = db_session.query(Pegawai, User).outerjoin( User, User.id == Pegawai.user_id) for peg, usr in q: print(peg.id, peg.nama, usr and usr.user_name)