PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Effectuer une mise à niveau d'alambic dans plusieurs schémas

Nous avons fini par utiliser le mécanisme d'événement de sqlalchemy pour intercepter les requêtes avant qu'elles ne soient exécutées et ajouter un préfixe pour modifier le schéma :

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)

De cette façon, nous pouvons exécuter la migration d'alembic plusieurs fois, en nous assurant que le schema_name est résolu correctement à chaque fois, et que tout fonctionne correctement