examples.dogpile_caching.environment — SQLAlchemy 2.0 Documentation (original) (raw)

Source code for examples.dogpile_caching.environment

"""Establish data / cache file paths, and configurations, bootstrap fixture data if necessary.

"""

from hashlib import md5 import os

from dogpile.cache.region import make_region

from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import scoped_session from sqlalchemy.orm import sessionmaker from . import caching_query

dogpile cache regions. A home base for cache configurations.

regions = {}

scoped_session.

Session = scoped_session(sessionmaker())

cache = caching_query.ORMCache(regions) cache.listen_on_session(Session)

global declarative base class.

Base = declarative_base()

root = "./dogpile_data/"

if not os.path.exists(root): input( "Will create datafiles in %r.\n" "To reset the cache + database, delete this directory.\n" "Press enter to continue.\n" % root ) os.makedirs(root)

dbfile = os.path.join(root, "dogpile_demo.db") engine = create_engine("sqlite:///%s" % dbfile, echo=True) Session.configure(bind=engine)

def md5_key_mangler(key): """Receive cache keys as long concatenated strings; distill them into an md5 hash.

"""
return md5(key.encode("ascii")).hexdigest()

configure the "default" cache region.

regions["default"] = make_region( # the "dbm" backend needs # string-encoded keys key_mangler=md5_key_mangler ).configure( # using type 'file' to illustrate # serialized persistence. Normally # memcached or similar is a better choice # for caching. "dogpile.cache.dbm", expiration_time=3600, arguments={"filename": os.path.join(root, "cache.dbm")}, )

optional; call invalidate() on the region

once created so that all data is fresh when

the app is restarted. Good for development,

on a production system needs to be used carefully

regions['default'].invalidate()

installed = False

def bootstrap(): global installed from . import fixture_data

if not os.path.exists(dbfile):
    fixture_data.install()
    installed = True

© Copyright 2007-2025, the SQLAlchemy authors and contributors.

flambé! the dragon and The Alchemist image designs created and generously donated by Rotem Yaari.

Created using Sphinx 8.2.3. Documentation last generated: Tue 10 Jun 2025 01:31:29 PM EDT