Hi Michael,

On Mon, 2011-08-01 at 14:18 -0400, Michael Bayer wrote:

> The Session's default behavior is to expire fully the state present after a 
> rollback occurs.   The next access of any attribute will guaranteed pull 
> fresh from the DB in a new transaction. 
> 
> I'm assuming you know this, and that there is something additional here 
> you're looking for, like an event to the GUI to actually re-access the 
> attributes, or something.

Exactly.

> A surprise for me.    Yes the after_rollback() seems to only fire
> after an actual database rollback.  This is a bug in that there is no
> way to catch soft rollbacks.  I can't change the event, as it is
> integral in transactional extensions like that supplied for Zope; a
> new one will have to be added and the docs for after_rollback() will
> need to be updated.

Actually I expected after_rollback to fire only after an actual DB
rollback. Or did I misinterpret the errors in that the rollback came
before a flush to the database and therefore no actual reload from the
database would be needed?

> Ticket #2241 is added for this and is completed.   You can now use the
> 0.7 tip and use the after_soft_rollback() event in conjunction with
> the is_active flag:
> 
>             @event.listens_for(Session, "after_soft_rollback")
>             def do_something(session, previous_transaction):
>                 if session.is_active:
>                     session.execute("select * from some_table")

I looked at the is_active flag in SQLAlchemy 0.6.8 already and I think I
can only use it with autocommit disabled. Unfortunately I use
autocommit=True.

I know that's a bad choice from the SQLAlchemy point of view. The reason
why I am using it is that I want to avoid to keep the database locked
over a long time, as this makes our background processes fail
(OperationalError: Database is locked). I am a victim of the limitations
of SQLite here :-(

Perhaps after the current stabilization phase, I will move to SA 0.7 and
autocommit=False. I am not sure about the latter though.

Thanks and Greetings, Torsten

-- 
DYNAmore Gesellschaft fuer Ingenieurdienstleistungen mbH
Torsten Landschoff

Office Dresden
Tel: +49-(0)351-4519587
Fax: +49-(0)351-4519561

mailto:torsten.landsch...@dynamore.de
http://www.dynamore.de

Registration court: Mannheim, HRB: 109659, based in Karlsruhe,
Managing director:  Prof. Dr. K. Schweizerhof, Dipl.-Math. U. Franz

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