public inbox for [email protected]  
help / color / mirror / Atom feed
From: Karsten Hilbert <[email protected]>
To: Adrian Klaver <[email protected]>
Cc: [email protected]
Cc: [email protected]
Subject: Re: psycopg2: proper positioning of .commit() within try: except: blocks
Date: Sat, 7 Sep 2024 23:20:57 +0200
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
References: <[email protected]>
	<[email protected]>
	<[email protected]>
	<[email protected]>
	<[email protected]>
	<[email protected]>

Am Sat, Sep 07, 2024 at 02:09:28PM -0700 schrieb Adrian Klaver:

> >Right, and this was suggested elsewhere ;)
> >
> >And, yeah, the actual code is much more involved :-D
> >
>
> I see that.
>
> The question is does the full code you show fail?
>
> The code sample you show in your original post is doing something very different then
> what you show in your latest post. At this point I do not understand the exact problem
> we are dealing with.

We are not dealing with an unsolved problem. I had been
asking for advice  where to best place that .commit() call in
case I am overlooking benefits and drawbacks of choices.

The

	try:
		do something
	except:
		log something
	finally:
		.commit()

cadence is fairly Pythonic and elegant in that it ensures the
the .commit() will always be reached regardless of exceptions
being thrown or not and them being handled or not.

It is also insufficient because the .commit() itself may
elicit exceptions (from the database).

So there's choices:

Ugly:

	try:
		do something
	except:
		log something
	finally:
		try:
			.commit()
		except:
			log some more

Fair but not feeling quite safe:

	try:
		do something
		.commit()
	except:
		log something

Boring and repetitive and safe(r):

	try:
		do something
	except:
		log something
	try:
		.commit()
	except:
		log something

I eventually opted for the last version, except for factoring
out the second try: except: block.

Best,
Karsten
--
GPG  40BE 5B0E C98E 1713 AFA6  5BC0 3BEA AC80 7D4F C89B





view thread (10+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected], [email protected]
  Subject: Re: psycopg2: proper positioning of .commit() within try: except: blocks
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox