On Sep 3, 12:22 am, John Nagle <na...@animats.com> wrote:
>     I would expect MySQLdb to rollback on a control-C, but it doesn't
> seem to have done so.  

> Something is broken.

I wouldn't expect it to, I'd expect to roll back on an exception, or
commit if not.  Perhaps this will help you.  I use it in production
code.

##
# This is a transaction context manager.  It will ensure that the code
in
# the context block will be executed inside a transaction.  If any
exception
# occurs, the transaction will be rolled back, and the exception
reraised.
# If no exception occurs, the transaction will be committed.
# db is a database connection object.

from contextlib import contextmanager

@contextmanager
def transaction(db):
    db.begin()
    try:
        yield None
    except:
        db.rollback()
        raise
    else:
        db.commit()
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to