Wat we uiteindelijk deden, was het gebeurtenismechanisme van sqlalchemy gebruiken om de query's op te vangen voordat ze worden uitgevoerd en een voorvoegsel toe te voegen om het schema te wijzigen:
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)
Op deze manier kunnen we de migratie van alambiek meerdere keren uitvoeren, waarbij we ervoor zorgen dat de schemanaam elke keer correct wordt opgelost en dat alles soepel werkt