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.
