On Jan 11, 2008, at 12:30 PM, Denis S. Otkidach wrote:
>
> # Another program. We have to insure that object with id=1 exists in
> DB and has
> # certain properties.
> obj2 = ModelObject(1, u'title2')
> session.merge(obj2)
> session.commit()
what that looks like to me is that you're attempting to query the
database for object ID #1 using merge().
when you merge(), its going to treat the object similarly to how it
does using session.save_or_update(). that is, it looks for an
"_instance_key" attribute to determine if the object represents a
transient or persisted instance.
So you could "hack" the way youre doing it like:
obj2 = ModelObject(1, u'title2')
obj2._instance_key = session.identity_key(instance=obj2)
session.merge(obj2)
session.commit()
we have yet to define a completely public API for the above operation,
i.e. "treat this object as though its persistent". im not sure yet
how we could define one that has a straightforward use case which
wouldn't add confusion.
Anyway, the "legit" way to go is this (and this is what the above
merge() is doing anyway):
obj2 = session.query(ModelObject).get(1)
if not obj2:
obj2 = ModelObject(1, u'title2')
session.save(obj2)
else:
obj2.title= u'title2'
session.commit()
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---