__init__.py :  » Database » SQLAlchemy » SQLAlchemy-0.6.0 » examples » beaker_caching » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » Database » SQLAlchemy 
SQLAlchemy » SQLAlchemy 0.6.0 » examples » beaker_caching » __init__.py
"""
Illustrates how to embed Beaker cache functionality within
the Query object, allowing full cache control as well as the
ability to pull "lazy loaded" attributes from long term cache 
as well.

In this demo, the following techniques are illustrated:

* Using custom subclasses of Query
* Basic technique of circumventing Query to pull from a 
  custom cache source instead of the database.
* Rudimental caching with Beaker, using "regions" which allow
  global control over a fixed set of configurations.
* Using custom MapperOption objects to configure options on 
  a Query, including the ability to invoke the options 
  deep within an object graph when lazy loads occur.

E.g.::
    
    # query for Person objects, specifying cache
    q = Session.query(Person).options(FromCache("default", "all_people"))
    
    # specify that each Person's "addresses" collection comes from
    # cache too
    q = q.options(RelationshipCache("default", "by_person", Person.addresses))
    
    # query
    print q.all()
    
To run, both SQLAlchemy and Beaker (1.4 or greater) must be
installed or on the current PYTHONPATH. The demo will create a local
directory for datafiles, insert initial data, and run. Running the
demo a second time will utilize the cache files already present, and
exactly one SQL statement against two tables will be emitted - the
displayed result however will utilize dozens of lazyloads that all
pull from cache.

The demo scripts themselves, in order of complexity, are run as follows::

   python examples/beaker_caching/helloworld.py

   python examples/beaker_caching/relationship_caching.py

   python examples/beaker_caching/advanced.py

   python examples/beaker_caching/local_session_caching.py


Listing of files:

    environment.py - Establish data / cache file paths, and configurations, 
    bootstrap fixture data if necessary.

    meta.py - Represent persistence structures which allow the usage of
    Beaker caching with SQLAlchemy.  Introduces a query option called
    FromCache.

    model.py - The datamodel, which represents Person that has multiple
    Address objects, each with PostalCode, City, Country

    fixture_data.py - creates demo PostalCode, Address, Person objects
    in the database.

    helloworld.py - the basic idea.

    relationship_caching.py - Illustrates how to add cache options on
    relationship endpoints, so that lazyloads load from cache.

    advanced.py - Further examples of how to use FromCache.  Combines
    techniques from the first two scripts.

    local_session_caching.py - Grok everything so far ?   This example
    creates a new Beaker container that will persist data in a dictionary
    which is local to the current session.   remove() the session
    and the cache is gone.

"""
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.