On 11.11.11 08:22, Mark Erbaugh wrote:
> Is there a best practice or recipe for handling database concurrency when 
> using SQLAlchemy with Pyramid?
> 
> I'm considering porting a desktop accounting application to the web with 
> Pyramid/SQLAlchemy.  Assume that a user opens an invoice for editing. Assume 
> that before this user POSTs the changes, another user opens the same invoice 
> and posts changes. While with 'desktop' SQLAlchemy, the update is protected 
> by a database transaction, I don't think that's true on the web.
> 
> Here's my first thought of a possible solution.  Assume the invoice is 
> represented by a one-many relationship between a header and detail table. 
> There could be a write count field in the header that is automatically 
> incremented every time the invoice is updated. This write count could be 
> saved in a hidden field (or in the user's session). When the inovice is 
> POSTed, the write count field could be compared with the write count in the 
> database and an error issued if they don't match.
> 
> Are there any problems with this approach, or is there a better solution?
> 
> Thanks,
> Mark
> 

The classic lost update trick. Take a look at version_id_col in the mapper
creation [1]


[1]http://www.sqlalchemy.org/docs/orm/mapper_config.html?highlight=version_id_col

-- 
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" 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/pylons-discuss?hl=en.

Reply via email to