Claro que você pode fazer isso com SQLAlchemy.
Tudo o que você precisa fazer é criar mecanismos de conexão diferentes, cada um com seu próprio criador de sessão. Nada no SQLAlchemy limita você a apenas um banco de dados por vez.
engines = []
sessions = []
for dbconninfo in databases:
engine = create_engine(dbconninfo)
engines.append(engine)
sessions.append(sessionmaker(bind=engine)())
Você pode usar cada sessão para executar consultas, os objetos de resultado são anexados à sessão que os produziu, para que as alterações fluam de volta para o banco de dados correto. Estude a documentação da sessão em detalhes, para ver o que acontece se você mesclar um objeto de uma sessão em outra, por exemplo.