2012-09-10 10 views
10

私の会社の異なる部門の製品データベースシステムを作成したとします。各部門にはさまざまな理由で独自のPostgreSQL-databse-instanceがあります。データベースのスキーマは同じですが、それらのデータは異なります。これらのシステムのそれぞれに対して、ビジネスロジックを行うPythonアプリケーションが存在します(無関係)。各Pythonアプリケーションは、SQLAlchemyを介してデータベースにアクセスします。SQLAlchemyを使用して複数のデータベースにシームレスにアクセスするには?

これらすべてのデータベースのすべてのデータにアクセスできるスーパービジターシステムを作成したい(読取り機能)。ここで

は私が考えるものの例である: enter image description here

私はSQLAlchemyのであることを行うことができますか?もしそうなら、そのような問題のための最良のアプローチは何ですか?

答えて

10

確かに、SQLAlchemyを使用することができます。

あなたが行う必要があるのは、それぞれ独自のセッションメーカーを持つ異なる接続エンジンを作成することだけです。 SQLAlchemyでは、一度に1つのデータベースに制限されるものはありません。あなたは、クエリを実行するために、各セッションを使用することができます

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

変更が正しいデータベースに逆流するように、結果オブジェクトは、それらを生成するセッションに接続されています。 session documentationを詳細に調べて、あるセッションから別のセッションにオブジェクトをマージする場合にどうなるかを確認してください。

+0

そして、一度にすべてのdbsを照会できますか? – AME

+1

@AME:結果を分けて保存している限り、あるセッションの結果を別のセッションに追加しようとしないでください。 –

関連する問題