Derek ...

Quoting from http://docs.djangoproject.com/en/1.2/topics/db/transactions/:

> Django’s default behavior is to run with an open transaction which it
> commits automatically when any built-in, data-altering model function is
> called. For example, if you call model.save() or model.delete(), the
> change will be committed immediately.
>
> This is much like the auto-commit setting for most databases. As soon as
> you perform an action that needs to write to the database, Django produces
> the INSERT/UPDATE/DELETE statements and then does the COMMIT. There’s no
> implicit ROLLBACK.
>

Using the Django transaction API, you can manually control transactions.  In
this case, Silva must be doing something like this:

from django.db import transaction

@transaction.commit_manually
def viewfunc(request):
    ...
    # You can commit/rollback however and whenever you want
    i = 0
    for x in data:
        ... save something ...
        i += 1
        if i % 1000:
            transaction.commit()

    # One last commit to persist the last batch of saves
    transaction.commit()


I will also note that the transaction API can be (and should be) used when
you're writing management commands.

 - Craig -

On Mon, Dec 27, 2010 at 05:29, derek <gamesb...@gmail.com> wrote:

> Can you explain what you mean by "manual commitments" (preferably with
> a code example)?
>
> Thanks
> Derek
>
> On Dec 26, 4:38 am, Silva Paulo <psdasi...@yahoo.com> wrote:
> > OK. I found a "solution".
> > Using manual commitments after lots of insertions (ex. >1000) makes the
> massive insertion very fast (at least for my needs).
> >
> > Thanks to all who answered.
> >
> > --- On Fri, 12/24/10, Silva Paulo <psdasi...@yahoo.com> wrote:
> >
> >
> >
> >
> >
> >
> >
> > > From: Silva Paulo <psdasi...@yahoo.com>
> > > Subject: Massive insertion of records
> > > To: "newbie" <django-users@googlegroups.com>
> > > Date: Friday, December 24, 2010, 6:26 PM
> > > I need to do a massive insertion of
> > > records in two tables "connectd" by "foreignkey". Is there a
> > > way, using the Django db API, to do it. e=Foo(...);e.save()
> > > seems too slow.
> >
> > > Thanks
> >
> > >
> >
> > > --
> > > You received this message because you are subscribed to the
> > > Google Groups "Django users" group.
> > > To post to this group, send email to django-us...@googlegroups.com.
> > > To unsubscribe from this group, send email to
> > > django-users+unsubscr...@googlegroups.com<django-users%2bunsubscr...@googlegroups.com>
> .
> > > For more options, visit this group athttp://
> groups.google.com/group/django-users?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To post to this group, send email to django-us...@googlegroups.com.
> To unsubscribe from this group, send email to
> django-users+unsubscr...@googlegroups.com<django-users%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>
>

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

Reply via email to