Re: psycopg2: proper positioning of .commit() within try: except: blocks

Liste des GroupesRevenir à cl python 
Sujet : Re: psycopg2: proper positioning of .commit() within try: except: blocks
De : jon+usenet (at) *nospam* unequivocal.eu (Jon Ribbens)
Groupes : comp.lang.python
Date : 08. Sep 2024, 13:03:21
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <slrnvdr13p.4dt.jon+usenet@raven.unequivocal.eu>
References : 1 2 3 4 5 6 7 8 9
User-Agent : slrn/1.0.3 (Linux)
On 2024-09-08, Greg Ewing <greg.ewing@canterbury.ac.nz> wrote:
On 8/09/24 9:20 am, Karsten Hilbert wrote:
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.
>
That seems wrong to me. I would have thought the commit should only
be attempted if everything went right.
>
What if there's a problem in your code that causes a non-SQL-related
exception when some but not all of the SQL statements in the
transaction bave been issued? The database doesn't know something
has gone wrong, so it will happily commit a partially-completed
transaction and possibly corrupt your data.
>
This is how I normally do things like this:
>
   try:
     do something
     .commit()
   except:
     log something
     .rollback()
>
Doing an explicit rollback ensures that the transaction is always
rolled back if it is interrupted for any reason.

What if there's an exception in your exception handler? I'd put the
rollback in the 'finally' handler, so it's always called. If you've
already called 'commit' then the rollback does nothing of course.

Date Sujet#  Auteur
7 Sep 24 * Re: psycopg2: proper positioning of .commit() within try: except: blocks25Karsten Hilbert
8 Sep 24 `* Re: psycopg2: proper positioning of .commit() within try: except: blocks24Greg Ewing
8 Sep 24  +* Re: psycopg2: proper positioning of .commit() within try: except: blocks20Jon Ribbens
8 Sep 24  i+- Re: psycopg2: proper positioning of .commit() within try: except: blocks1Stefan Ram
8 Sep 24  i+* Re: psycopg2 positioning of .commit() (Posting On Python-List Prohibited)17Lawrence D'Oliveiro
9 Sep 24  ii`* Re: psycopg2 positioning of .commit() (Posting On Python-List Prohibited)16Jon Ribbens
9 Sep 24  ii `* Re: psycopg2 positioning of .commit() (Posting On Python-List Prohibited)15Lawrence D'Oliveiro
9 Sep 24  ii  `* Re: psycopg2 positioning of .commit() (Posting On Python-List Prohibited)14Jon Ribbens
9 Sep 24  ii   +- Re: psycopg2 positioning of .commit() (Posting On Python-List Prohibited)1Karsten Hilbert
9 Sep 24  ii   +* Re: psycopg2 positioning of .commit() (Posting On Python-List Prohibited)2Karsten Hilbert
9 Sep 24  ii   i`- Re: psycopg2 positioning of .commit() (Posting On Python-List Prohibited)1Jon Ribbens
9 Sep 24  ii   `* Re: psycopg2 positioning of .commit() (Posting On Python-List Prohibited)10Lawrence D'Oliveiro
9 Sep 24  ii    `* Re: psycopg2 positioning of .commit() (Posting On Python-List Prohibited)9Jon Ribbens
9 Sep 24  ii     `* Re: psycopg2 positioning of .commit() (Posting On Python-List Prohibited)8Lawrence D'Oliveiro
10 Sep 24  ii      `* Re: psycopg2 positioning of .commit() (Posting On Python-List Prohibited)7Jon Ribbens
10 Sep 24  ii       +* Re: psycopg2 positioning of .commit() (Posting On Python-List Prohibited)2Karsten Hilbert
10 Sep 24  ii       i`- Re: psycopg2 positioning of .commit() (Posting On Python-List Prohibited)1Jon Ribbens
10 Sep 24  ii       `* Re: psycopg2 positioning of .commit() (Posting On Python-List Prohibited)4Lawrence D'Oliveiro
11 Sep 24  ii        `* Re: psycopg2 positioning of .commit() (Posting On Python-List Prohibited)3Jon Ribbens
11 Sep 24  ii         `* Re: psycopg2 positioning of .commit() (Posting On Python-List Prohibited)2Lawrence D'Oliveiro
11 Sep 24  ii          `- Re: psycopg2 positioning of .commit() (Posting On Python-List Prohibited)1Jon Ribbens
9 Sep 24  i`- Re: psycopg2: proper positioning of .commit() within try: except: blocks1Greg Ewing
8 Sep 24  +- Re: psycopg2: proper positioning of .commit() within try: except: blocks1Karsten Hilbert
8 Sep 24  +- Re: psycopg2: proper positioning of .commit() within try: except: blocks1Karsten Hilbert
13 Sep 24  `- Re: psycopg2 positioning of .commit() (Posting On Python-List Prohibited)1Lawrence D'Oliveiro

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal