Skip to content

Instantly share code, notes, and snippets.

@Gwildor
Created May 26, 2017 13:15
Show Gist options
  • Select an option

  • Save Gwildor/6b93f96272586334bed4938a19f3478a to your computer and use it in GitHub Desktop.

Select an option

Save Gwildor/6b93f96272586334bed4938a19f3478a to your computer and use it in GitHub Desktop.
Track SQLAlchemy session cleanness
@event.listens_for(Session, 'after_begin')
def session_after_begin(session, transaction, connection):
session.info['clean'] = True
@event.listens_for(Session, 'after_flush')
def session_after_flush(session, flush_context):
if session.new or session.dirty or session.deleted:
session.info['clean'] = False
@event.listens_for(Session, 'after_commit')
def session_after_commit(session):
session.info['clean'] = True
@event.listens_for(Session, 'after_rollback')
def session_after_rollback(session):
session.info['clean'] = True
@event.listens_for(Session, 'after_bulk_update')
def session_after_bulk_update(update_context):
update_context.session.info['clean'] = False
@event.listens_for(Session, 'after_bulk_delete')
def session_after_bulk_delete(delete_context):
delete_context.session.info['clean'] = False
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment