PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Führen Sie ein Destillierkolben-Upgrade in mehreren Schemas durch

Am Ende haben wir den Ereignismechanismus von sqlalchemy verwendet, um die Abfragen abzufangen, bevor sie ausgeführt werden, und ein Präfix hinzugefügt, um das Schema zu ändern:

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)

Auf diese Weise können wir die Migration von Alembic mehrmals ausführen und sicherstellen, dass der schema_name jedes Mal korrekt aufgelöst wird und alles reibungslos funktioniert