Thanks Michael, I'll check the two articles out tonight
Nick On 25 November 2010 17:05, Michael Bayer <[email protected]> wrote: > > On Nov 25, 2010, at 11:02 AM, Nickle wrote: > >> I'm trying to get my head around idempotent updating. >> >> ie I'm creating some objects, I want to store them. These objects >> might or might not be already stored in the database. If they are, I >> want to update them if necessary (a field has changed), or insert >> them if they do not exist. >> >> What's the preferred approach? > > From a SQL perpsective there's a SELECT of the row, then an INSERT or UPDATE > based on the result of the SELECT, unless you're using an extended form of > SQL such as MySQL's REPLACE. > > While there are ways to use REPLACE and similar, the ORM standardizes on the > old fashioned way. The Session.merge() method implements one form of this > operation. If you have the primary key of the object ahead of time, using > merge() will accept the given object as "state" and look up the PK if exists, > else create. copying the state you give it onto the one in the session. > merge() is powerful since it runs along cascade lines to operate on a whole > series of objects at once (and as such can be tricky). Lots of > documentation at > http://www.sqlalchemy.org/docs/orm/session.html?highlight=merge#unitofwork-merging > . > > For simple cases like looking up a tag or keyword, as well as cases where you > don't have the primary key up front, there's a recipe that illustrates one > way to create an object interface that hides most of this detail at > http://www.sqlalchemy.org/trac/wiki/UsageRecipes/UniqueObject . > > >> >> Nick >> >> -- >> 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. >> > > -- > 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. > > -- Nick -- 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.
