In some Alembic upgrade scripts, I need to use application sessions to make 
use of some code that requires these sessions. To avoid deadlocks from 
blocking transactions I use the following lines to transparently call 
`get_db_session()` regardless of whether Alembic or the application is 
executed:


def _alembic_get_db_session():
    from alembic import op
    alembic_connection = op.get_bind()
    return Session(bind=alembic_connection)


def _normal_get_db_session():
    return scoped_session(session_maker)


def get_db_session():
    if is_alembic_active:
        return _alembic_get_db_session()
    else:
        return _normal_get_db_session()


How can I fill out the `is_alembic_active` part? I know that the 
application is running and op.get_bind() is called, the following exception 
is raised (I tried to check with op.get_bind() is None which obviously 
doesn't work).

NameError: Can't invoke function 'get_bind', as the proxy object has not 
> yet been established for the Alembic 'Operations' class. Try placing this 
> code inside a callable.
>
 
Any idea?

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy-alembic" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to