[sqlalchemy] Re: checking a relationship exists

2009-09-22 Thread joeformd

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

2009-09-19 Thread joeformd

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

2009-09-19 Thread Michael Bayer


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

2009-09-19 Thread joeformd

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

2009-09-19 Thread Michael Bayer


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

2009-09-18 Thread Michael Bayer


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