On Fri, Mar 6, 2009 at 10:28 AM, Jeremy Dunck <jdu...@gmail.com> wrote:

>
> The Django docs for TransactionMiddleware state:
> "When a request starts, Django starts a transaction. If the response
> is produced without problems, Django commits any pending
> transactions."
>
> This is apparently not actually true.
>
> I have some code using cursor.execute while doing no operations using
> the ORM through a full request cycle-- but it does run under
> TransactionMiddleware.  It turns out that if transaction.set_dirty
> never gets called, then the request completes without a commit going
> to the DB; the DB rightfully interprets this as a rollback.
>
> This caused silent data loss for about a year for me; it wasn't
> obvious for some time because my .execute call often coincides with
> other ORM use, meaning that a large portion of the data I meant to
> save actually did get saved.
>
> I would like basically any data going to the DB to trigger set_dirty.
> I *think* this just means cursor.execute with insert/update/delete,
> but I haven't reviewed closely yet.
>
> Is there any objection to this change?  I can work up a patch, but
> this is obviously a touchy area.
>

Sounds like:

http://code.djangoproject.com/ticket/9964

Karen

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-developers@googlegroups.com
To unsubscribe from this group, send email to 
django-developers+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to