2012-09-10 2 views
10

회사의 여러 부서에 대한 제품 데이터베이스 시스템을 만들었습니다. 각 부서는 여러 가지 이유로 자체 PostgreSQL-databse-instance를 가지고 있습니다. 데이터베이스의 스키마는 동일하지만 데이터는 동일하지 않습니다. 이러한 각 시스템에 대해 비즈니스 로직을 수행하는 Python 응용 프로그램이 있습니다 (관련 없음). 각 Python 응용 프로그램은 SQLAlchemy를 통해 해당 데이터베이스에만 액세스합니다.SQLAlchemy를 사용하여 여러 데이터베이스에 원활하게 액세스하려면 어떻게해야합니까?

모든 데이터베이스의 모든 데이터에 액세스 할 수있는 수퍼바이저 시스템을 만들고 싶습니다 (읽기 기능). enter image description here

내가 SQLAlchemy의와 그렇게 할 수 있습니다 : 여기

내가 어떻게 생각하는지의 예입니다? 그렇다면, 그런 종류의 문제에 대한 최선의 접근 방법은 무엇입니까?

답변

10

확실히 SQLAlchemy로 할 수 있습니다.

당신이해야 할 일은 서로 다른 세션 엔진을 가진 서로 다른 연결 엔진을 만드는 것뿐입니다. SQLAlchemy의 어떤 것도 한 번에 하나의 데이터베이스로 제한하지 않습니다.

engines = [] 
sessions = [] 
for dbconninfo in databases: 
    engine = create_engine(dbconninfo) 
    engines.append(engine) 
    sessions.append(sessionmaker(bind=engine)()) 

당신은 쿼리를 실행하기 위해 각 세션을 사용할 수는, 결과 객체는 변경이 올바른 데이터베이스에 역류 있도록 그들을 생산 세션에 붙어있다. session documentation을 자세히 살펴보고 한 세션에서 다른 세션으로 개체를 병합하는 경우 어떻게되는지 확인하십시오.

+0

그러면 모든 DB를 한 번에 쿼리 할 수 ​​있습니까? – AME

+1

@AME : 결과를 별도로 유지하는 한; 한 세션에서 다른 세션으로 결과를 추가하지 마십시오. –

관련 문제