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.