PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Eseguire l'aggiornamento dell'alambicco in più schemi

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