On Thu, Aug 11, 2016 at 8:30 AM, Wibowo Arindrarto <w.arindra...@gmail.com> wrote: > Dear all, > > I have a little problem with getting object states that have been flushed > but not committed. As far as I understand, SQLAlchemy does not have an > official object state corresponding to this. However, in my application I > need to track such objects. My current approach is to listen to the > ``after_flush`` session event, similar to the one outlined here. However, > that gets messy quite quickly if I want to track different instances from > different tables as the approach uses a global db.session.info state. > > For the record, I'm also open to suggestions / critiques on whether tracking > flushed but not committed objects are a good idea. The reason I am doing > this is because I need to do something like ``get_or_create`` (get a > database record if present, create it otherwise). But I'm doing this > multiple times, and some objects may be a container of multiple other > objects. To make the ``get_or_create`` query of these container objects > simpler, I store the hash of the object IDs that it contains. Doing so means > that I need to have all the contained object IDs, which means I have to at > least flush the contained objects first before I can run ``get_or_create`` > on the container object. > > Now, my question is, is it possible to extend my models such that I can > track the commit status of it? If so, how do I do it? If not, is there a > better way to tackle my underlying problem (i.e. doing ``get_or_create`` on > a container object)? I am aware of the ``persistent`` state, but it does not > make the distinction on the commit status of an object. >
I don't really understand the question here - it's not clear to me why get_or_create for the container objects is any different than get_or_create for any other object, or what that has to do with flushed-but-not-committed records. Why do you need to treat objects that have been flushed but not committed any differently to committed ones? Simon -- 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 https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.