Thank you, please apply the change in r9327b3748997 to your 
_params_from_query() function.


On Dec 22, 2010, at 5:47 AM, sector119 wrote:

> from beaker import cache
> 
> from sqlalchemy import *
> from sqlalchemy.orm import mapper, sessionmaker, scoped_session,
> relationship
> from sqlalchemy.types import *
> 
> # from examples/beaker_caching
> from eps.model import caching_query
> 
> 
> ### INIT
> 
> cache_manager = cache.CacheManager()
> metadata = MetaData()
> engine = create_engine('postgresql+psycopg2://
> LOGIN:[email protected]:5432/DBNAME', echo=False)
> Session = scoped_session(sessionmaker(autoflush=True,
> autocommit=False,
> 
> query_cls=caching_query.query_callable(cache_manager), bind=engine))
> 
> cache_manager.regions['default'] = {
>    'type': 'memory',
>    'lock_dir': '/tmp',
> }
> 
> ### END INIT
> 
> 
> ### TABLES
> 
> # groups
> 
> groups_table = Table('groups', metadata,
>    Column('id', Integer, primary_key=True),
>    Column('name', String(255), unique=True, nullable=False)
> )
> 
> class Group(object):
>    def __init__(self, name):
>        self.name = name
> 
> mapper(Group, groups_table)
> 
> # users
> 
> users_table = Table('users', metadata,
>    Column('id', Integer, primary_key=True),
>    Column('username', String(255), unique=True, nullable=False),
>    Column('first_name', Unicode(255), nullable=False),
>    Column('last_name', Unicode(255), nullable=False),
>    Column('middle_name', Unicode(255), nullable=False)
> )
> 
> 
> # users_groups
> 
> users_groups_table = Table('users_groups', metadata,
>    Column('user_id', Integer, ForeignKey('users.id')),
>    Column('group_id', Integer, ForeignKey('groups.id'))
> )
> 
> class User(object):
>    def __init__(self, username, first_name, last_name, middle_name):
>        self.username = username
>        self.first_name = first_name
>        self.last_name = last_name
>        self.middle_name = middle_name
> 
> mapper(
>    User,
>    users_table,
>    properties={
>        'groups': relationship(Group, lazy=True,
> secondary=users_groups_table, backref='users')
>    }
> )
> 
> cache_user_relationships = caching_query.RelationshipCache('default',
> 'by_id', User.groups)
> 
> ### END TABLES
> 
> 
> ### HELPERS
> 
> def get_user(username):
>    return Session.query(User).\
>                   options(cache_user_relationships).\
>                   options(caching_query.FromCache('default',
> 'by_username')).\
>                   filter_by(username=username).one()
> 
> def print_groups(user):
>    for g in user.groups:
>        print g.name
> 
> ### END HELPERS
> 
> 
> ### CREATE
> 
> metadata.create_all(engine)
> 
> ### END CREATE
> 
> 
> ### POPULATE
> 
> u1 = User('sector119', u'A', u'B', u'C')
> u1.groups = [Group('G1')]
> u2 = User('sector120', u'D', u'E', u'F')
> u2.groups = [Group('G2')]
> Session.add_all([u1, u2])
> 
> Session.commit()
> 
> ### END POPULATE
> 
> 
> ### TEST ...
> 
> u = get_user('sector119')
> print '1. %s groups:' % u.username
> print_groups(u)
> print '2. %s groups:' % u.username
> print_groups(u)
> 
> u = get_user('sector120')
> print '1. %s groups:' % u.username
> print_groups(u)
> print '2. %s groups:' % u.username
> print_groups(u)
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/sqlalchemy?hl=en.
> 

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to