Quello che abbiamo finito per fare è stato usare il meccanismo degli eventi di sqlalchemy per catturare le query prima che venissero eseguite e aggiungere un prefisso per modificare lo schema:
def before_cursor_execute(conn, cursor, statement, parameters, context, executemany):
schema_name = <Logic to resolve schema name>
statement = "SET search_path TO '%s'; %s" % (schema_name, statement)
return statement, parameters
......
(later in the code)
listen(Engine, 'before_cursor_execute', before_cursor_execute, retval=True)
In questo modo, possiamo eseguire più volte la migrazione dell'alambicco, assicurandoci che schema_name sia risolto correttamente ogni volta e che tutto funzioni senza intoppi