[sqlalchemy] Re: checking a relationship exists
thanks - but how does that query specify a town? It seems like that would just return true if the current user had any town relationships? Or am I reading it wrong? On Sep 19, 5:46 pm, Michael Bayer mike...@zzzcomputing.com wrote: On Sep 19, 2009, at 11:41 AM, joeformd wrote: When we tried that it made a sql query to get all the towns (towns are loaded lazily) - that could be an awful lot of information, so this would be a much faster query so, the most succinct (and efficient) query of all is session.scalar(exists().where(user_towns.c.user_id==current_user.id)) should return True/False right back On Sep 19, 4:33 pm, Michael Bayer mike...@zzzcomputing.com wrote: On Sep 19, 2009, at 10:19 AM, joeformd wrote: Thanks for the speedy response Michael, we came up with this: current_user_has_town = bool(session.query(User).filter (User.id==current_user.id).filter(User.towns.contains (current_user)).count()) which maybe has slightly clearer intent? if you already have the current_user, why not just say town in current_user.towns --~--~-~--~~~---~--~~ 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 sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~--~~~~--~~--~--~---
[sqlalchemy] Re: checking a relationship exists
Thanks for the speedy response Michael, we came up with this: current_user_has_town = bool(session.query(User).filter (User.id==current_user.id).filter(User.towns.contains (current_user)).count()) which maybe has slightly clearer intent? --~--~-~--~~~---~--~~ 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 sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~--~~~~--~~--~--~---
[sqlalchemy] Re: checking a relationship exists
On Sep 19, 2009, at 10:19 AM, joeformd wrote: Thanks for the speedy response Michael, we came up with this: current_user_has_town = bool(session.query(User).filter (User.id==current_user.id).filter(User.towns.contains (current_user)).count()) which maybe has slightly clearer intent? if you already have the current_user, why not just say town in current_user.towns --~--~-~--~~~---~--~~ 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 sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~--~~~~--~~--~--~---
[sqlalchemy] Re: checking a relationship exists
When we tried that it made a sql query to get all the towns (towns are loaded lazily) - that could be an awful lot of information, so this would be a much faster query On Sep 19, 4:33 pm, Michael Bayer mike...@zzzcomputing.com wrote: On Sep 19, 2009, at 10:19 AM, joeformd wrote: Thanks for the speedy response Michael, we came up with this: current_user_has_town = bool(session.query(User).filter (User.id==current_user.id).filter(User.towns.contains (current_user)).count()) which maybe has slightly clearer intent? if you already have the current_user, why not just say town in current_user.towns --~--~-~--~~~---~--~~ 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 sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~--~~~~--~~--~--~---
[sqlalchemy] Re: checking a relationship exists
On Sep 19, 2009, at 11:41 AM, joeformd wrote: When we tried that it made a sql query to get all the towns (towns are loaded lazily) - that could be an awful lot of information, so this would be a much faster query so, the most succinct (and efficient) query of all is session.scalar(exists().where(user_towns.c.user_id==current_user.id)) should return True/False right back On Sep 19, 4:33 pm, Michael Bayer mike...@zzzcomputing.com wrote: On Sep 19, 2009, at 10:19 AM, joeformd wrote: Thanks for the speedy response Michael, we came up with this: current_user_has_town = bool(session.query(User).filter (User.id==current_user.id).filter(User.towns.contains (current_user)).count()) which maybe has slightly clearer intent? if you already have the current_user, why not just say town in current_user.towns --~--~-~--~~~---~--~~ 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 sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~--~~~~--~~--~--~---
[sqlalchemy] Re: checking a relationship exists
On Sep 18, 2009, at 7:44 PM, joeformd wrote: Is there a simple way in SQLA to check if a relationship exists between two rows in a many-to-many situation, where the relationship is defined using another table? eg. the join table might look like this: user_towns = Table('user_towns', Base.metadata, Column('user_id', Integer, ForeignKey('users.id')), Column('town_id', Integer, ForeignKey('towns.id')) ) to check if a relationship exists, the SQL would be fairly simple, with no joins required (is there a row in this table where user.id = user_id and town.id = town_id) Is there a simple way of asking this using SQLA, with the query syntax? the simplest would be query(User.id).join(User.towns).filter (User.id==uid).filter(Town.id==tid). --~--~-~--~~~---~--~~ 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 sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~--~~~~--~~--~--~---