Have you looked at using the `inspect` tool? It could solve all your issues within an event
http://docs.sqlalchemy.org/en/rel_0_9/core/inspection.html 1. You can check to see if an object is `.transient` or not. if it is, then it's not bound to a session and you don't have to validate. 2. the object's i.attrs will have a .history f = s.query(Foo).get(1) f.number = 3 inspected = inspect(f) if f.transient: return # no validation needed for attr in inspected.attrs: print "-" print attr.key print attr.value print attr.history that section above would output: ======== - number 5 History(added=[5], unchanged=(), deleted=[2]) ======== -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.