My shard_chooser func,shard_chooser_post, bailing out on, lk_rec =
querylk.get([instance.username]) with an error (username is the
primary key for Post table):

  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/shard.py", line 60, in get_bind
    return self.__binds[shard_id]
KeyError: 'l'

Not sure what that means.  More likely I am not doing ShardSession
Query get properly.  Any help appreciated.

Here is the relevant code for brevity:

sesslk = create_session_lookup()
def shard_chooser_post(mapper, instance, clause=None):

    querylk = sesslk.query(Lookup)
    print "inside shard_chooser_post"
    # ORM creates this kind of query:
    #ShardedQuery: SELECT lookup.username AS lookup_username,
lookup.shardname AS lookup_shardname
    #FROM lookup ORDER BY lookup.username

    #Valid SQL Should be:
    #SELECT lookup.username AS lookup_username, lookup.shardname AS
lookup_shardname
    #FROM lookup  where lookup.username = "0" ;

    #What happend to instance.username, is of m1.username
(Post.username)
    lk_rec = querylk.get([instance.username])
    print lk_rec.shardname
    return shard_post_dict['%s' % lk_rec.shardname]

If I do:
    sess = create_session_post()
    setup_all()

    for i in  range(DATA):

        m1 = Post(

                username="%d" % (i),
                title = "test data"
                )
        sess.begin()
        sess.save(m1)
        sess.commit()
        sess.clear()


$ python post_data.py
inside shard_chooser_post
Traceback (most recent call last):
  File "post_data.py", line 45, in <module>
    load_data()
  File "post_data.py", line 41, in load_data
    load_data_post()
  File "post_data.py", line 37, in load_data_post
    sess.commit()
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/session.py", line 554, in commit
    self.transaction.commit()
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/session.py", line 259, in commit
    self._prepare_impl()
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/session.py", line 243, in _prepare_impl
    self.session.flush()
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/session.py", line 786, in flush
    self.uow.flush(self, objects)
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/unitofwork.py", line 233, in flush
    flush_context.execute()
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/unitofwork.py", line 445, in execute
    UOWExecutor().execute(self, tasks)
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/unitofwork.py", line 930, in execute
    self.execute_save_steps(trans, task)
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/unitofwork.py", line 945, in execute_save_steps
    self.save_objects(trans, task)
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/unitofwork.py", line 936, in save_objects
    task.mapper._save_obj(task.polymorphic_tosave_objects, trans)
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/mapper.py", line 1006, in _save_obj
    tups = [(state, connection_callable(self, state.obj()),
_state_has_identity(state)) for state in states]
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/shard.py", line 50, in connection
    shard_id = self.shard_chooser(mapper, instance)
  File "/home/joe/mystuff/dev/workspace/django_project/
mysite_sqlalchemy/tmp/post_config.py", line 37, in shard_chooser_post
    lk_rec = querylk.get([instance.username])
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/shard.py", line 112, in get
    o = self.set_shard(shard_id).get(ident, **kwargs)
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/shard.py", line 108, in get
    return super(ShardedQuery, self).get(ident)
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/query.py", line 269, in get
    return self._get(key, ident, **kwargs)
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/query.py", line 1049, in _get
    return q.all()[0]
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/query.py", line 876, in all
    return list(self)
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/query.py", line 936, in __iter__
    return self._execute_and_instances(context)
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/shard.py", line 90, in _execute_and_instances
    result = self.session.connection(mapper=self.mapper,
shard_id=self._shard_id).execute(context.statement, **self._params)
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/shard.py", line 53, in connection
    return self.transaction.connection(mapper, shard_id=shard_id)
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/session.py", line 174, in connection
    engine = self.session.get_bind(bindkey, **kwargs)
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.4.6-py2.5.egg/
sqlalchemy/orm/shard.py", line 60, in get_bind
    return self.__binds[shard_id]
KeyError: 'l'

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
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