Hi,

Did you first load the entry to update into the session or do you  
always create new objects to be saved ?
I guess you need to:

1 - try to get the record from the database using the product_id or 
another unique field
2 - if the result set is not empty,
        update the record using values from the XML and session.commit() 
will update the database
     else
        create a new mapped object with values from the XML file, 
session.add(ob), and session.commit() will add the record into database

Regards,

Laurent


n00b a écrit :
> greetings,
>
> i'm batch processing xml documents to mysql using SA 0.5, ORM.
>
> data extracted from xml docs may be new or an update in form of a
> replacement of
> the existing object (record). (one of the columns, product_id, is
> unique=True). Hence,
> SA throws, as expected, an IntegrityError (1062, duplicate Entry) when
> i'm trying to commit the revised object via session.add(obj),
> session.commit().
>
> given the xml volume at hand, i thought i could use session.merge
> rather than query every time for existence. alas, no go. get the same
> 1062 exception. obviously, i don't understand the session merge.
>
> in fact, even if i query for the existence, then try and assign the
> new object to the existing object (old_obj = session.query(OBJ).filter
> (OBJ.product_id == new_obj.product.id).one(), old_obj = new_obj,
> session.add(old_obj), session.commit()), i get the dreaded 1062.
>
> any insights/suggestions?
>
> thx
> >
>
>   


--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to