> -----Original Message-----
> From: sqlalchemy@googlegroups.com [mailto:sqlalchemy@googlegroups.com]
> On Behalf Of jos.carpente...@yahoo.com
> Sent: 26 July 2011 18:27
> To: sqlalchemy@googlegroups.com
> Subject: [sqlalchemy] Updating records in table not working
> 
>  I'm using Postgres as a database. I try to create new records or
> update existing records with data. The data is parsed from a csv file.
> Creating new records works fine. But when a record already exists,
> the update fails with:
> 
> 
>  IntegrityError: (IntegrityError) duplicate key value violates unique
> constraint "stock_item_pkey"
> 
> I've looked at the SA documentation and as far as I can see the 'add'
> does an insert or an update.


I think this is incorrect - 'add' always corresponds to 'INSERT'


> I've also tried updata, but that fails
> too and als mentions a depreciated statement.
> 
> The new data is going to a single table. The PrimaryKey is the item
> number (item with value itemno in snippet below). Since the item is
> unique, I don't let Postgres create an id.
> 
> new = Item(item=itemno, ...)
> db.session.add(new)
> db.session.commit()
> 
> 
> I'm pretty new with SA and I might overlook something. How can I
> solve this?
> 

I *think* you should be able to use session.merge instead:

http://www.sqlalchemy.org/docs/orm/session.html#merging

temp = Item(item=itemno, ...)
new = db.session.merge(temp)
db.session.commit()

(note that 'merge' returns a new object attached to the session)

Hope that helps,

Simon

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to