On Nov 27, 2011, at 1:15 AM, Geo wrote:
> I have a query to join another two querys which are written as
> subqueries:
>
> paid_120_count = session.query(Capital_invest.member_id,
> func.count().label("count")).\
> join(Product,
> Capital_invest.prod_id==Product.prodid).\
> filter(Product.price*payback_pc-
> Capital_invest.capital_payback<=0).\
>
> group_by(Capital_invest.member_id).subquery()
>
> buy_product_count = session.query(Capital_invest.member_id,
> func.count().label("count")).\
> group_by(Capital_invest.member_id).subquery()
>
> x_members = session.query(Distributor).\
> join(paid_120_count,
> paid_120_count.c.member_id==Distributor.id).\
> join(buy_product_count,
> buy_product_count.c.member_id==Distributor.id).\
>
> filter(paid_120_count.c.count==buy_product_count.c.count).\
> filter(Distributor.quali_bonus==True)
>
>
> So the distributor is the center table joins two queries. The Query
> returns data without problem. But i can't update the result data
> subsequently, for example
>
> for member in x_members:
> member.name ="xxxxx"
>
> The sqlalchemy just simply do nothing. I have to do this:
>
> for member in x_members:
> member.name ="xxxxx"
>
> dist = session.query(Distributor).get(member.id)
> dist.name = "xxxxx"
did you close out the Session before you iterated through x_members ? This
test will ensure you're doing things correctly:
for member in x_members:
dist = session.query(Distributor).get(member.id)
assert dist is member
the identity map will ensure they are the same instance, *if* you are operating
on x_members as present in the Session. If the Session got closed before you
iterated, you'd need to not do that.
--
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.