> On 2 Mar, 00:10, Jason Culverhouse <ja...@mischievous.org> wrote:
>> Hi,
>> It seems that the contenttype framework and the sites contribs
>> conflict with using the autocommit:True database option.
>
> Do you really need that autocommit? Django has its own concept of
> autocommit,
> which seems to just work most of the time.
> With database-level autocommit turned on, Django-level transaction
> handling
> is not going to do anything useful.
>
Uhm. That's inaccurate in the postgresql case, IIRC. With the psycopg2
backend autocommit option on, if you /actually start a transaction/ via
django (n.b. _including_ implicitly via turning on the normal django
TransactionMiddleware*), you still get transactional behaviour. It's
the initial/"outer" state is autocommit, which is useful for a variety
of reasons (the one that we've found most useful is "intuitive"
(conforming to naive user expectations) behaviour at the ./manage.py shell)
* The TransactionMiddleware calls enter_transaction_management [1][2],
which will boost the isolation level to 1 (from 0) if autocommit is on
for the psycopg2 backend. [3] (noting managed=True in [2]) . If
autocommit is off, then the isolation level is 1 anyway. [4]
See psycopg2 docs for isolation level notes [5]. (I think django
sources could do with using the relevant psycopg2 constants for the
levels and not 0/1, but that's minor)
[1]
http://code.djangoproject.com/browser/django/trunk/django/middleware/transaction.py#L10
[2]
http://code.djangoproject.com/browser/django/trunk/django/db/transaction.py#L32
[5] http://initd.org/psycopg/docs/extensions.html#isolation-level-constants
--
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
No comments:
Post a Comment