On Wed, May 31, 2017 at 1:59 AM, MRAB <pyt...@mrabarnett.plus.com> wrote:
> On 2017-05-30 16:03, Jon Ribbens wrote:
>>
>> On 2017-05-30, Joseph L. Casale <jcas...@activenetwerx.com> wrote:
>>>>
>>>> There's no difference I'm aware of in the implementations I've used,
>>>> but having a consistent API does allow for constructions such as:
>>>>
>>>> try:
>>>>     do_stuff(conn)
>>>> except:
>>>>     conn.rollback()
>>>> finally:
>>>>     conn.commit()
>>>
>>>
>>> So you always commit even after an exception?
>>
>>
>> Well, as you can see, it rollbacks then commits, so the commit does
>> nothing.
>>
> It also swallows any exception from do_stuff.

It's just missing the "raise" at the bottom of the except block. For
production code, I would assume that that would be present.

But this is why you really need to be using a context manager. If the
connector doesn't itself support them, wrap up your transaction
handling into your own context manager and use that. It's too easy to
forget something.

ChrisA
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to