確かにSQLAlchemyでそれを行うことができます。
あなたがする必要があるのは、それぞれが独自のセッションメーカーを持つ異なる接続エンジンを作成することです。 SQLAlchemyには、一度に1つのデータベースのみに制限されるものはありません。
engines = []
sessions = []
for dbconninfo in databases:
engine = create_engine(dbconninfo)
engines.append(engine)
sessions.append(sessionmaker(bind=engine)())
各セッションを使用してクエリを実行できます。結果オブジェクトは、クエリを生成したセッションにアタッチされるため、変更は正しいデータベースに戻ります。 セッションドキュメント を調べてください。 詳細には、たとえば、あるセッションから別のセッションにオブジェクトをマージした場合にどうなるかを確認します。