Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sn3TB-000gdU-Tc for psycopg@arkaria.postgresql.org; Sat, 07 Sep 2024 21:59:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sn3TB-004k58-5D for psycopg@arkaria.postgresql.org; Sat, 07 Sep 2024 21:59:49 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sn3TA-004k50-Uj for psycopg@lists.postgresql.org; Sat, 07 Sep 2024 21:59:48 +0000 Received: from mout.gmx.net ([212.227.15.18]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sn3T7-0003Dc-ET for psycopg@lists.postgresql.org; Sat, 07 Sep 2024 21:59:48 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1725746382; x=1726351182; i=karsten.hilbert@gmx.net; bh=fj2TFmsx9YQAea3u1tlOtUREqcYzAfo9FzG20R3ccXw=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:Message-ID:References: MIME-Version:Content-Type:In-Reply-To:Content-Transfer-Encoding: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=Hr2NduUdzHb9dBv4Y+3J7eDFmt5wGPyXAgIVViLO8i0LVwwF7aZTWcRaeL0vywh9 JBMT08xgjvE0lQGsvgfz7G4Wa9H3Ry2aqilvFmBrYmkkA4cgUhs9jaGw+cDY2qdmC qfUjC38vnDBVbPdZCB5/58Yj+uxxtDgCmgIyNteTAT1vag6cz1b32ItGOhr68pZsT 46BluGFNEiWfEOf3q2C3VQyyHuFeHdbjFZRRjcAiFg+w+qFKUd520KX1qMGsUtqXj Yj1ZkQ6D4xxYRGHUxtaLtHBK0l8i4xmlKStdOxNF5IikueOLDhfaCAKYFWNg7IQuW 0INCT/wgApDSA7lzig== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from hermes ([84.144.218.143]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M8ykW-1si7WV41kE-00HQIU; Sat, 07 Sep 2024 23:59:42 +0200 Received: from ncq by hermes with local (Exim 4.96) (envelope-from ) id 1sn3T3-0007Hw-0B; Sat, 07 Sep 2024 23:59:41 +0200 Date: Sat, 7 Sep 2024 23:59:41 +0200 From: Karsten Hilbert To: Adrian Klaver Cc: psycopg@lists.postgresql.org Subject: Re: psycopg2: proper positioning of .commit() within try: except: blocks Message-ID: References: <7cb50df2-9c76-477f-91c9-e149c7637104@aklaver.com> <5ee80b84-f04b-454d-ab39-45572e0751a1@aklaver.com> <4a1b12fc-24b7-4c7e-b1f2-6ec9c5f341c2@aklaver.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Ma_X_il-Followup-to: d Re_X_turn-receipt-to: Karsten.Hilbert@gmx.net Di_X_sposition-Notification-To: Karsten.Hilbert@gmx.net X-Confi_X_rm-Reading-To: Karsten.Hilbert@gmx.net X-Pri_X_ority: 2 (High) Sender: X-Provags-ID: V03:K1:dVyGy3Wlrs44/aVmwlaAIg2jJgm47q8lirnKr8sOX2iA61dwrZs M3BSNW4GgEIy9+IO1v/a7PjIPq4bwMOETnaDN1zGSrQzutVMp/NYM/hERHwagkE8buUVYPK cJyyEWxePNuAG+4nkLKS8qAtdmaC0AdzAk7VOOmrf0GHS6PVdlAfn36AXdIpFJRTkOIjhnZ b0WOjwbDDm2nSulxR7XRg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:FXSKJhuE888=;ESXflq5jpmCGxMHjlCzDBNPlpdU ODdfH6SlLoikpotO35CZ9zFLLxIzlUbfxA2zf1eCOYnLsxIzUYUs+yGvawf8dW1zaM2HxGMyA CviM//cmq0M4/ioR8miW5pn2XeF9mCOMbWl062EwVp9R2+l4gBf8zyfXWbgARCmK2uaZewhIo wsIaa8OrJkQatnQTpvpUN8LsYvBUXduAWhHV/TC+4XgDt4XmJDvlenQQu9MoGtOvWI7P1d39w HFClQsP9L9q4ydGu/ZN2o28/ky8IYc97mX+qDOUIccFluSB27vVkHrSvOx65tmc9pIRyjNbHA IfpRZL/njsqO2FgO6citz+4b0cUzAESbDl8MCx1djNiNSnZpFIG5Y8gPBpxVEhdspBKpGvVG7 XS8a26CQaVYvl2tuJihx4MgaYfsi4VjcL6TGre5f/4X3IMHpN8CLas2CeNifu4ISdB66xJJsc gi23ArhJ4yS4/i0Lyh7PaBY0evi7ghmwoaI5wvcgQ08CS+C1dbKjQKNe6JzBiD+RZHNpF9AuS L1m0yR23OiHLhR99NtYbqM6wHuN/TPtt1OEsvIMJWrfMuS+RXn0rXUnT8BG6tjyhLcKzV/aHU Pl2Fu/04ZYMzm5zFHNr54rgHdnNzMmhMPQNJsDE4CkZF9ksDNQI0UkVFNbzRaUpUf43fxOQeh RmPzQFI/MpgdBy5i8WC3RiIB5Qmzp3KQ2QpxM+w57pD5dOeviK4VA3Geg8DnIXjWjT+TzfpnZ D/2lThtghqzEacYnJ5LC71Oj2yZvhESr3U+Af4C9Q93MTlY4QePGVUqMwAsoNanB/DrdE56nt xiIznG//htwneW9Q1+ICQSjg== Content-Transfer-Encoding: quoted-printable List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Am Sat, Sep 07, 2024 at 02:47:49PM -0700 schrieb Adrian Klaver: > >It is also insufficient because the .commit() itself may > >elicit exceptions (from the database). > > Yeah with Serializable that is part of the package: No complaints :-) > > 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. > > I'm not following, if you do that then you won't have a commit. Perhaps my pseudo-code was to abbreviated. conn =3D psycopg2.connection() curs =3D conn.cursor() curs.execute(SQL) curs.close() conn.commit() conn.close() Written more safely: conn =3D psycopg2.connection() curs =3D conn.cursor() try: curs.execute(SQL) except SOME_PG_EXCEPTION_VIA_PSYCOPG2: some_panicstricken_logging() curs.close() try: conn.commit() except SOME_PG_EXCEPTION_VIA_PSYCOPG2__SUCH_AS_SERIALIZATION_ERROR: some_more_of_the_panicstricken_logging() conn.close() now factored out: def __commit_me_logging_errors(commit_func): try: commit_func() except SOME_PG_EXCEPTION_VIA_PSYCOPG2__SUCH_AS_SERIALIZATION_ERROR: some_more_of_the_panicstricken_logging() return conn =3D psycopg2.connection() curs =3D conn.cursor() try: curs.execute(SQL) except SOME_PG_EXCEPTION_VIA_PSYCOPG2: some_panicstricken_logging() curs.close() __commit_me_logging_errors(conn.commit) conn.close() More clear ? Karsten =2D- GPG 40BE 5B0E C98E 1713 AFA6 5BC0 3BEA AC80 7D4F C89B