Skip to content

Instantly share code, notes, and snippets.

@inklesspen
Last active January 18, 2016 21:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save inklesspen/8375a2e5e37996f6dabc to your computer and use it in GitHub Desktop.
Save inklesspen/8375a2e5e37996f6dabc to your computer and use it in GitHub Desktop.
from sqlalchemy import engine_from_config
from sqlalchemy.orm import sessionmaker
from zope.sqlalchemy import register
import transaction
# https://github.com/inklesspen/mimir/blob/fee47910e149094a339a26297324d61568dbadf3/mimir/models/__init__.py#L259-L278
def create_session(request):
sessionmaker = request.registry['db_sessionmaker']
session = sessionmaker()
register(session, transaction_manager=request.tm)
return session
def pyramid_tm_hook(request=None):
return transaction.TransactionManager()
def includeme(config):
config.add_settings({'tm.manager_hook': pyramid_tm_hook})
settings = config.get_settings()
config.include('pyramid_tm')
engine = engine_from_config(settings, 'sqlalchemy.')
maker = sessionmaker()
maker.configure(bind=engine)
config.registry['db_sessionmaker'] = maker
config.add_request_method(create_session, 'db_session', reify=True)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment