On Jun 25, 2008, at 10:48 AM, Huy Do wrote:
> > Hi, > > I read in the 0.5 release notes that the c attribute was no longer > necessary when doing queries using the mapped class, but I did not see > it mentioned that the c attribute was removed all together. > > It's just that I've been using the c attribute in my Mapped classes to > access the database/table metadata and now all my code will need to be > changed to use the table.c attribute instead. > > Was there a reason for removing the c attribute from mapped classes > altogether ? > in 0.5, the attributes on classes vs. the columns on Tables are very different beasts now. Its not at all the same thing if you say: sess.query(MyClass.id, MyClass.name) vs. sess.query(mytable.c.id, mytable.c.name) since in the former case, we know that we are dealing with the MyClass mapper; in the latter case, we're not. The behavior of things like join(), polymorphic loading, other options, etc. are completely different - in the case of joined table inheritance it's dramatically different, where "Subclass.id" and "subtable.c.id" are literally different columns. So we really can't have a casual ".c." attribute hanging around on classes with the new behavior; the user needs to be very explicit when choosing between MyClass.attr vs. table.c.attr. That said, you can retroactively add your ".c." attribute using a MapperExtension that implements "instrument_class()", and assigns the "c" attribute from the table to the class. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
