unit of work logging can be enabled: import logging logging.basicConfig() logging.getLogger('sqlalchemy.orm.unitofwork').setLevel(logging.DEBUG)
when a class has a relation to itself, a dependency is created during flush: DEBUG:sqlalchemy.orm.unitofwork.UOWTransaction:Dependent tuples: (Forum->Forum) it means, we can no longer insert all Forum rows in the order they were received - we have to check each object for dependencies on a parent Forum object and modify the insert order in that way. A sort is then performed among all three Forum objects, where "sort" is a topological dependency sort. The ordering of this sort is not deterministic. in this case, there are no dependencies at all so the sort turns up an ordering that is mostly random. but topological doesn't take "insert order" into account at this level. the resulting list is then grouped into a tree-like structure, which is intended to create "batches" of objects, where within each batch, the uow can again fall back upon the insert ordering among those rows. the "tree" step is total craziness which I wrote at some point and was rewritten by ants aasma, our resident uber genius, and would be great to get rid of. Here's what the code has to say: # rationale for "tree" sort as opposed to a straight # dependency - keep non-dependent objects # grouped together, so that insert ordering as determined # by session.add() is maintained. # An alternative might be to represent the "insert order" # as part of the topological sort itself, which would # eliminate the need for this step (but may make the original # topological sort more expensive) so in theory topological could be improved to take "insert order" into account, we can lose the unnecessary tree stage which doesn't really solve the issue completely anyway, and that would probably improve this test. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---