On Dec 15, 2011, at 10:15 PM, Jackson, Cameron wrote: > I was just having a problem with a one-to-many relationship array coming out > in the wrong order. Looking here, It wasn't too hard to figure out that I > needed to do: > > myFoos = relationship(Foo, order_by = Foo.id) > > I was a little surprised though that this isn't the default behaviour. Going > by the results that I was getting before I fixed the problem, it looked like > the default was in order from least to most recently modified. > > So I'd like to suggest that the default beahviour be to order the array by > id, when there is one.
Do you actually mean the string name "id" ? Or at least the primary key of the related table ? Complicating factors here include if primary key is composite, if the key is against a value with varied collation behaviors like a unicode string, if the association is many-to-many (and thus a PK is present on the association table), or if sets or dicts, which are unordered, are used, not to mention custom collections where SQLA can't make a decision automatically. > That said, I'm sure it would be doable. I think it would be a good > improvement, although if it's going to be harder than I realise, it might not > be worth it, given that it's so easy to just do it yourself manually. > It's actually not hard at all but we removed default order_bys in version 0.5 (see implicit order by removed: http://www.sqlalchemy.org/trac/wiki/05Migration#ObjectRelationalMapping) They introduce performance issues, complicate queries, and introduce occasional configurational difficulties, and we'd prefer users to choose that they want a particular collection to be ordered, and to have a more streamlined and simple behavior in the absence of this choice, not to mention it simplifies various components within the internals, which are in a constant battle to remain as simple as possible (which is still not very simple). SQLAlchemy overall tries as hard as possible to not assume anything about the design of a schema or what kinds of queries are most appropriate. The Python philosophy of "explicit is better than implicit" is in full force here ! Note Hibernate also has no order-by on collections either unless specified: http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/collections.html#d0e11300 -- 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.