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 [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
-~----------~----~----~----~------~----~------~--~---