Public
Snippet $106 authored by Owo Sugiana

Tidak Masalah Beda Base

Edited
orm-beda-base.py
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)