On Jun 24, 2011, at 1:26 PM, Arthur Kopatsy wrote:

> Awesome.
> 
> Does that mean the sqlalchemy example is wrong. It currently has:
>        if callable(value):
>            value = value()
> 

yeah thats out of date, usage  was changed in 0.7.


> Should it be something like that?
> 
>        if value == None and bind.callable !=
> None:
> |    verificationTokenExpiry = Column(String)
>            value = bind.callable()
> 
> Thank you so much for the quick response.

yup....we had the same issue with beaker ill have to update this example


> 
> Arthur
> 
> 
> On Jun 24, 10:05 am, Michael Bayer <[email protected]> wrote:
>> On Jun 24, 2011, at 12:49 PM, Arthur Kopatsy wrote:
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>>> Hi,
>> 
>>> I am trying to write a proper query_chooser method for our user based
>>> sharding. To do so, I need to be able to query the value of the
>>> query's criterions.
>> 
>>> I have the following model:
>>> class User(object):
>>>    id = Column(Integer, primary_key=True)
>>>    ...
>> 
>>> class Subscription(object):
>>>    id = Column(Integer, primary_key=True)
>>>    producerId = Column(Integer, ForeignKey('User.id'))
>>>    consumerId = Column(Integer) # No foreign key because sharded on
>>> producerId
>>>    producer = relationship('User', backref='subscriptions')
>> 
>>> In my query_chooser, I am using the code from the attribute_sharding
>>> example and try to find out the value of producerId if there is such a
>>> criterion.
>> 
>>> Given an existing myUser instance and a session, I see two different
>>> behaviors:
>> 
>>> 1. session.query(Subscription).filter(Subscription.producerId ==
>>> myUser.id).all()
>> 
>>> I will get a proper value for producerId in the dictionary of bound
>>> parameters so I can find out the shard, no problem.
>> 
>>> SELECT "InboundSubscription".s9id AS "InboundSubscription_s9id",
>>> "InboundSubscription".active AS "InboundSubscription_active",
>>> "InboundSubscription"."createdAt" AS "InboundSubscription_createdAt",
>>> "InboundSubscription"."updatedAt" AS "InboundSubscription_updatedAt",
>>> "InboundSubscription"."followerId" AS
>>> "InboundSubscription_followerId", "InboundSubscription"."producerId"
>>> AS "InboundSubscription_producerId", "InboundSubscription".status AS
>>> "InboundSubscription_status", "InboundSubscription".suspended AS
>>> "InboundSubscription_suspended"
>>> FROM "InboundSubscription"
>>> WHERE "InboundSubscription"."producerId" = :producerId_1
>> 
>>> 2. myUser.subscriptions
>> 
>>> I get a None value for the anonymous parameter which prevents me from
>>> picking a shard.
>> 
>>> SELECT "InboundSubscription".s9id AS "InboundSubscription_s9id",
>>> "InboundSubscription".active AS "InboundSubscription_active",
>>> "InboundSubscription"."createdAt" AS "InboundSubscription_createdAt",
>>> "InboundSubscription"."updatedAt" AS "InboundSubscription_updatedAt",
>>> "InboundSubscription"."followerId" AS
>>> "InboundSubscription_followerId", "InboundSubscription"."producerId"
>>> AS "InboundSubscription_producerId", "InboundSubscription".status AS
>>> "InboundSubscription_status", "InboundSubscription".suspended AS
>>> "InboundSubscription_suspended"
>>> FROM "InboundSubscription"
>>> WHERE :param_1 = "InboundSubscription"."producerId"
>> 
>>> When is this value populated? How can I access it in query_chooser?
>> 
>> The bindparam() object should have a "callable" attribute - call that to get 
>> the value.    These values are late-bound when using lazyloading.
> 
> -- 
> 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