Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1maxbt-0007jQ-Cn for psycopg@arkaria.postgresql.org; Thu, 14 Oct 2021 10:05:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1maxbs-0001hI-C2 for psycopg@arkaria.postgresql.org; Thu, 14 Oct 2021 10:05:12 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1maxbs-0001h8-4t for psycopg@lists.postgresql.org; Thu, 14 Oct 2021 10:05:12 +0000 Received: from mout.gmx.net ([212.227.17.22]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1maxbp-0001sD-TR for psycopg@postgresql.org; Thu, 14 Oct 2021 10:05:11 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1634205903; bh=VWcojkZ5WRipFmVV3FAmBF8vpYyiQcZqX5MAK3+paWw=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=WX6gsS67JzNV9JG2o5342i/mpyHNpDfCDY8p4Fse9fAuRQxUrQxZsGkoT5fES7gfC dh2dQfxVQXMNHY/U8aXQHqrB77QtbyV0pr+4zvcM8qwOF6bwyNH1cv3uAhRF1kuumW aeXk4OOR9AAC6tPXDpp1FCHwYUMtMhTYHaX1Btus= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [217.91.207.107] ([217.91.207.107]) by web-mail.gmx.net (3c-app-gmx-bs43.server.lan [172.19.170.95]) (via HTTP); Thu, 14 Oct 2021 12:05:03 +0200 MIME-Version: 1.0 Message-ID: From: Karsten Hilbert To: Daniel Fortunov Cc: Daniele Varrazzo , Paolo De Stefani , Psycopg Subject: Aw: Re: psycopg3 transactions Content-Type: text/plain; charset=UTF-8 Date: Thu, 14 Oct 2021 12:05:03 +0200 Importance: normal Sensitivity: Normal In-Reply-To: References: <9a99d2d110b121542d1ea0a05066858b@paolodestefani.it> X-UI-Message-Type: mail X-Priority: 3 X-Provags-ID: V03:K1:7zi3TjPtiQt4KNg8jSfBaz5dEUnFDz+Z6fXekOLWMFxNbAIJvATmW1Y7rk5EoX5TZLz+a RmikThDKGCoEQ4Z0NEzo58FiBgngX3eqXYVlWxHW+lsHh6j6yfHWxlsWS5Emx9DOIReEaoJTVpYW 1z3Vpa0BbuxWaDkMKQaHmnoYh2TdMp/lIRfuXx20BxQSWwXtpHXK4/q3upboFL1z79py0EaZk4HT xIgqqoWh/rjYiRxV/w5D6T83MOCKlilB/eXa0U7TaUic4hjg662w6kXW4V/+aktMxrFotQ0oKlSS ZU= X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:HqgiBrNzzyI=:S2dcUM10UOwOOBTml32hbu ZK4U+RWs1GmvZ+Ae5lrJJjraH9wqs0FWB2854nw32zs/mndR1jAElXhkAIHNHp+eROu+BCwb7 2BuQU70VXoG3Z0cca4aQUv6moYa1DiaX7zy0ZN1h+qTdiRFsjZaS9CQWgQcrJ57JHYprNY6AK 3rkdxeT1EtsK4wz8ge4EHWyDJ7Kue/ACvSmXEJzW98eO09F2/vbpxkQ5F6vvqtYovUU4tuX8X 9Ny4K627kY/D8UKwdIULBG67HKNai0MGG7VtWZ7TSopxz6XjN3U2uHIDqgt3L1XKJ3uQxHYaU jaumTiCC9Z68CuX5SvzXrY9m4r3sJo+ON7+zEOACJw/ZYj5bxuu36mFnQcnxEwcCRxnU2AvXp 0oHJp4/iJJsz1Mru+p0nwGjrPVuieJ2LhTSyEVlyc4V4wgjzM+R6LG0NamMUXJ2ImmnDFCplB TEqFLZrLKY7SbqbWGwRS3Z1EQgIOmqSYSHUivV2buwDi3eWwSYbKBqlphlPtbBVQQNUzcya7S DRnh1yT+6Lohs3oAuzDHxIzsbzpsjeLcTdMlCJxLeuip2ebXST0IpH6rqR+18Hh7eBts0RO7I 2laj1BNnj4dEwFJBa+9QzKKXa5P2NKPja4yqiPhkxjVaDJvlTsy2aKcJO7EbmlwgXTNNaflBW ZHSbUK2FXawmHUho8T/+UpAkTV7q5md+TpTlXTsVbgC6Pe3tIoAOEOuOq2rQsmBhrtYsSfkRS lWQNKnbBb9tG5m5IRpi5Z7cBEtX0bpAFrT2kliXWuWpV8zjGpU8wQoB1XHyzqqAdE8EjSUR9R 2oNqKGb List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk >My conclusion is that the only sane thing to do is: >1. Only ever create connections in autocommit mode. >2. Only ever use `with connection.transaction()` to control transactions. >3. Forget that `connection.commit()` and `connection.rollback()` exist, and never use them. What if you need to rollback a hitherto valid transaction ? Transactions are there for a reason. It seems best to explicitely use them ? Karsten