Yep, it's should be: "def print_groups(u)"

Michael, do you need complete (with data) working (or working wrong:)
sample?

That code is working... But with existing data...

On 21 Грд, 16:39, Michael Bayer <mike...@zzzcomputing.com> wrote:
> I couldn't begin to know what the issue is with code fragments like this.  
> Though your "print_groups()" function here is wrong:
>
> def print_groups(user):
>    for g in u.groups:
>        print g.name
>
> On Dec 21, 2010, at 9:15 AM, sector119 wrote:
>
>
>
>
>
>
>
> > Hello!
>
> > I have a problem with my relationship caching with 0.7b1 (current
> > trunk)
>
> > When I perform query on `User` model with `username` param, than
> > access some lazy and cached separaterly from main query relationship -
> > `groups`.
> > After that I exec the same query on `User` model with another
> > `username` param and access `groups` relationship I got the same
> > groups as with first query and no sql being executed to get those
> > groups...
>
> > The same code works correctly with 0.6.5.
>
> > To reproduce:
>
> > % sudo invoke-rc.d memcached restart
> > [sudo] password for sector119:
> > Restarting memcached: memcached.
> > %
>
> > # sacache.py
>
> > from sqlalchemy import create_engine
>
> > from eps.model import init_model
> > from eps.model import meta
> > from eps.model import caching_query as cache
> > from eps.model import cache_user_relationships
> > from eps.model import User
> > from eps.model import SYSTEM_SCHEMA
>
> > def get_user(username):
> >    user = meta.Session.query(User).\
> >                        options(cache_user_relationships).\
> >                        options(cache.FromCache('default',
> > 'by_username')).\
> >                        filter_by(username=username,
> > disabled=False).first()
>
> >    meta.Session.connection().execute('SET search_path TO {0},
> > {1}'.format(SYSTEM_SCHEMA,
>
> > user.locality.schema))
>
> >    return user
>
> > def print_groups(user):
> >    for g in u.groups:
> >        print g.name
>
> > engine = create_engine('postgresql+psycopg2://
> > eps:mypassw...@127.0.0.1:5432/eps', echo=True)
> > init_model(engine)
>
> > 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('privat')
> > print '1. %s groups:' % u.username
> > print_groups(u)
> > print '2. %s groups:' % u.username
> > print_groups(u)
>
> > Output:
>
> > 1. sector119 groups:
> > wheel
> > 2. sector119 groups:
> > wheel
>
> > 1. privat groups:
> > wheel
> > 2. privat groups:
> > wheel
>
> > Echoing SQL:
>
> > 2010-12-21 15:50:38,273 INFO sqlalchemy.engine.base.Engine select
> > version()
> > 2010-12-21 15:50:38,274 INFO sqlalchemy.engine.base.Engine {}
> > 2010-12-21 15:50:38,275 INFO sqlalchemy.engine.base.Engine select
> > current_schema()
> > 2010-12-21 15:50:38,275 INFO sqlalchemy.engine.base.Engine {}
> > 2010-12-21 15:50:38,276 INFO sqlalchemy.engine.base.Engine BEGIN
> > (implicit)
>
> > # FIRST user
>
> > 2010-12-21 15:50:38,277 INFO sqlalchemy.engine.base.Engine SELECT
> > system.users.id AS system_users_id, system. users.username AS
> > system_users_username, system.users.password AS system_users_password,
> > system.users.        first_name AS system_users_first_name,
> > system.users.last_name AS system_users_last_name, system.users.
> > middle_name AS system_users_middle_name, system.users.locality_id AS
> > system_users_locality_id, system.users.  office_id AS
> > system_users_office_id, system.users.email AS system_users_email,
> > system.users.create_date AS    system_users_create_date,
> > system.users.last_login AS system_users_last_login,
> > system.users.expire AS          system_users_expire,
> > system.users.disabled AS system_users_disabled
> > FROM system.users
> > WHERE system.users.username = %(username_1)s AND system.users.disabled
> > = %(disabled_1)s
> > LIMIT %(param_1)s OFFSET %(param_2)s
> > 2010-12-21 15:50:38,277 INFO sqlalchemy.engine.base.Engine {'param_1':
> > 1, 'disabled_1': False, 'username_1':  'sector119', 'param_2': 0}
>
> > 2010-12-21 15:50:38,283 INFO sqlalchemy.engine.base.Engine SELECT
> > system.localities.id AS                     system_localities_id,
> > system.localities.name AS system_localities_name,
> > system.localities.type AS             system_localities_type,
> > system.localities.schema AS system_localities_schema
> > FROM system.localities
> > WHERE system.localities.id = %(param_1)s
> > 2010-12-21 15:50:38,283 INFO sqlalchemy.engine.base.Engine {'param_1':
> > 1}
>
> > 2010-12-21 15:50:38,285 INFO sqlalchemy.engine.base.Engine SET
> > search_path TO system,ternopil
> > 2010-12-21 15:50:38,285 INFO sqlalchemy.engine.base.Engine {}
>
> > # FIRST user GROUPS
>
> > 2010-12-21 15:50:38,286 INFO sqlalchemy.engine.base.Engine SELECT
> > system.groups.id AS system_groups_id,       system.groups.name AS
> > system_groups_name
> > FROM system.groups, system.users_groups
> > WHERE %(param_1)s = system.users_groups.user_id AND system.groups.id =
> > system.users_groups.group_id
> > 2010-12-21 15:50:38,286 INFO sqlalchemy.engine.base.Engine {'param_1':
> > 2}
>
> > # NEXT user
>
> > 2010-12-21 15:50:38,289 INFO sqlalchemy.engine.base.Engine SELECT
> > system.users.id AS system_users_id, system. users.username AS
> > system_users_username, system.users.password AS system_users_password,
> > system.users.        first_name AS system_users_first_name,
> > system.users.last_name AS system_users_last_name, system.users.
> > middle_name AS system_users_middle_name, system.users.locality_id AS
> > system_users_locality_id, system.users.  office_id AS
> > system_users_office_id, system.users.email AS system_users_email,
> > system.users.create_date AS    system_users_create_date,
> > system.users.last_login AS system_users_last_login,
> > system.users.expire AS          system_users_expire,
> > system.users.disabled AS system_users_disabled
> > FROM system.users
> > WHERE system.users.username = %(username_1)s AND system.users.disabled
> > = %(disabled_1)s
> > LIMIT %(param_1)s OFFSET %(param_2)s
> > 2010-12-21 15:50:38,289 INFO sqlalchemy.engine.base.Engine {'param_1':
> > 1, 'disabled_1': False, 'username_1':  'privat', 'param_2': 0}
> > 2010-12-21 15:50:38,291 INFO sqlalchemy.engine.base.Engine SET
> > search_path TO system,ternopil
> > 2010-12-21 15:50:38,291 INFO sqlalchemy.engine.base.Engine {}
>
> > # OTHER STUFF
>
> > def init_model(engine):
> >    cache_manager = cache.CacheManager()
>
> >    sm = sessionmaker(autoflush=True, autocommit=False,
>
> > query_cls=caching_query.query_callable(cache_manager), bind=engine)
>
> >    meta.engine = engine
> >    meta.Session = scoped_session(sm)
>
> >    cache_manager.regions['default'] = {
> >        'type': 'memcached',
> >        'url': '127.0.0.1:11211',
> >        'expire': 3600,
> >        'lock_dir': '/tmp',
> >    }
>
> > SYSTEM_SCHEMA = 'system'
>
> > cache_user_relationships = caching_query.RelationshipCache('default',
> > 'by_id', User.locality).and_(
>
> > caching_query.RelationshipCache('default', 'by_id',
> > User.office)).and_(
>
> > caching_query.RelationshipCache('default', 'by_id',
> > User.groups)).and_(
>
> > caching_query.RelationshipCache('default', 'by_id', User.roles)).and_(
>
> > caching_query.RelationshipCache('default', 'by_id', User.localities))
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "sqlalchemy" group.
> > To post to this group, send email to sqlalch...@googlegroups.com.
> > To unsubscribe from this group, send email to 
> > sqlalchemy+unsubscr...@googlegroups.com.
> > For more options, visit this group 
> > athttp://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 sqlalch...@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to