"""SQLAlchemy Metadata and Session object""" from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import scoped_session, sessionmaker from pylons_app.model import caching_query from beaker import cache import os from os.path import join as jn, dirname as dn, abspath import time # Beaker CacheManager. A home base for cache configurations. cache_manager = cache.CacheManager() __all__ = ['Base', 'Session'] # # SQLAlchemy session manager. Updated by model.init_model() # Session = scoped_session( sessionmaker( query_cls=caching_query.query_callable(cache_manager) ) ) # The declarative Base Base = declarative_base() #For another db... #Base2 = declarative_base() #=============================================================================== # CACHE OPTIONS #=============================================================================== cache_dir = jn(dn(dn(dn(abspath(__file__)))), 'data', 'cache') if not os.path.isdir(cache_dir): os.mkdir(cache_dir) # set start_time to current time # to re-cache everything # upon application startup start_time = time.time() # configure the "sqlalchemy" cache region. cache_manager.regions['sql_cache_short'] = { 'type':'memory', 'data_dir':cache_dir, 'expire':10, 'start_time':start_time } cache_manager.regions['sql_cache_med'] = { 'type':'memory', 'data_dir':cache_dir, 'expire':360, 'start_time':start_time } cache_manager.regions['sql_cache_long'] = { 'type':'file', 'data_dir':cache_dir, 'expire':3600, 'start_time':start_time } #to use cache use this in query #.options(FromCache("sqlalchemy_cache_type", "cachekey"))