|
Feb 17, 2013
|
У меня есть дополнение к pyramid которое я включаю почти в каждый проект при
помощи includeme (include()). Приложение
это дает мне простой CRUD интерфейс с Jinja шаблонами малой кровью.
Что позволяет избавиться от монстра FormAlchemy. Естественно каждый
проект имеет свое название поэтому пришлось применить немного магии что бы
создать универсальный механизм получения DBSession в своем подключаемом
дополнении.
Примерная структура папок дополнения:
pyramid_ext_plugin
|-- __init__.py
`-- action.py
В __init__.py находятся все настройки includeme, а в action.py
действия с базой. Для получения DBSession в action.py исправим сначала
__init__.py:
import sqlalchemy
import sqlalchemy.orm as orm
from zope.sqlalchemy import ZopeTransactionExtension
DBSession = None
def includeme(config):
global DBSession
engine = sqlalchemy.engine_from_config(config.registry.settings)
if DBSession is None:
DBSession = orm.scoped_session(
orm.sessionmaker(extension=ZopeTransactionExtension()))
DBSession.remove()
DBSession.configure(bind=engine)
Все Ж) теперь можно в action.py писать так:
from pyramid_ext_pugin import DBSession