Hi. If I have a many-to-many relation between Class1 and Class2, the following query: Class1.query.filter(Class1.class2s.contains(obj1)).filter(Class1.class2s.contains(obj2)) , where obj1 and obj2 are instances of Class2, generates the following sql in .4.6:
SELECT <lots of columns> FROM class1, secondary WHERE class1.id = secondary.class1_id AND %s = secondary.class2_id AND class1.id = secondary.class1_id AND %s = secondary.class2_id Note that the secondary table isn't being aliased for each contains(), so this will never return anything unless obj1==obj2. I think this used to use separate subqueries (with Exists) for each contains(), so this query worked before .4.6. (I only have .4.6 installed, so I can't verify). Also, if obj1 and obj2 aren't actually instances of type Class2 but are instead instances of some other mapped class that don't belong in this relation, SQLA happily uses them in the above query if they have a column with the same name as Class2's primary key. I would think that throwing an exception in that case would be better behavior? --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
