Skip site navigation (1) Skip section navigation (2)

autocommit and Django

From: Daniele Varrazzo <daniele(dot)varrazzo(at)gmail(dot)com>
To: psycopg(at)postgresql(dot)org
Subject: autocommit and Django
Date: 2011-06-14 09:42:15
Message-ID: BANLkTimtv6y8=4Yjj0dK_-6_CAVq7adP5Q@mail.gmail.com (view raw or flat)
Thread:
Lists: psycopg
Hi,

the connection.autocommit feature has created the problem shown here:

https://code.djangoproject.com/ticket/16250

I've taken a look and they have a set_autocommit method
<https://code.djangoproject.com/browser/django/trunk/django/db/backends/creation.py#L347>
implemented in a painful way: instead of being driver-specific they
just invoke some random method on the connection, and the thing is
compounds with the fact they *don't even know* there is a transaction
somehow already open. As per discussion
<http://archives.postgresql.org/psycopg/2011-05/msg00033.php>,
psycopg's set_session gives an error if invoked in a transaction.

Now, I would love to argue that Django's set_autocommit is written
with the wrong anatomical part, the bug is theirs and it's all their
problem. However, knowing the painful process they use to fix a bug I
wouldn't be surprised it would take months (see how they handled the
idle in transaction mess) and this would only be a problem for django,
postgres and psycopg users, as 2.4.2 is the version installed by
default by easy_install and friends. So I'm positive to change the
semantics of set_session/autocommit and issue an implicit rollback if
in transaction instead of raising an exception, as set_isolation_level
does.

Thoughts?

-- Daniele

Responses

psycopg by date

Next:From: Karsten HilbertDate: 2011-06-14 09:59:17
Subject: Re: autocommit and Django
Previous:From: Federico Di GregorioDate: 2011-06-13 16:53:03
Subject: RELEASE: psycopg 2.4.2

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group