使用一个大的INSERT语句保存许多Django对象

想象一下,你有以下情况:

for i in xrange(100000):
  account = Account()
  account.foo = i
  account.save

显然,Django执行的100,000个INSERT语句需要一些时间.能够将所有这些INSERT组合成一个大的INSERT会更好.这是我希望我能做的事情:

inserts = []

for i in xrange(100000):
  account = Account()
  account.foo = i
  inserts.append(account.insert_sql)

sql = 'INSERT INTO whatever... ' + ', '.join(inserts)

有没有办法使用QuerySet执行此操作,而无需手动生成所有这些INSERT语句?

最佳答案 您可以使用原始SQL.

通过Account.objects.raw()或使用django.db.connection对象.

如果要保持数据库不可知性,这可能不是一个选项.

http://docs.djangoproject.com/en/dev/topics/db/sql/

如果你正在做的是一次性设置,也许使用夹具会更好.

点赞