gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:23:34 24 4
gpt4 key购买 nike

假设您遇到以下情况:

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 语句?

最佳答案

如图in this related question ,可以使用 @transaction.commit_manually将所有 .save() 操作合并为一次提交,以大大提高性能。

@transaction.commit_manually
def your_view(request):
try:
for i in xrange(100000):
account = Account()
account.foo = i
account.save()
except:
transaction.rollback()
else:
transaction.commit()

或者,如果您喜欢冒险,请查看 this snippet它实现了一个用于批量插入的管理器。请注意,它仅适用于 MySQL,并且有一段时间没有更新,因此很难判断它是否能与较新版本的 Django 兼容。

关于python - 使用一个大的 INSERT 语句保存许多 Django 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5328301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com