我有很多对象要保存在数据库中,所以我想用它来创建Model示例。
使用django,我可以用MyModel(data)
创建所有模型示例,然后我想保存它们。
目前,我有这样的东西:
for item in items:
object = MyModel(name=item.name)
object.save()
我想知道我是否可以直接保存对象列表,例如:
objects = []
for item in items:
objects.append(MyModel(name=item.name))
objects.save_all()
如何在一个事务中保存所有对象?
8条答案
按热度按时间q43xntqr1#
在Django开发的时候,有一个
bulk_create
作为对象管理器方法,它接受一个使用类构造函数创建的对象数组作为输入。查看Django文档7gs2gvoe2#
使用
bulk_create()
方法。现在这是Django的标准配置。示例:
nbnkbykc3#
t3irkdon4#
对我来说,使用手动事务处理循环(postgres 9.1)是有用的:
事实上,它与“本机”数据库批量插入不同,但它允许您避免/降低传输/orms操作/sql查询分析成本
2hh7jdfx5#
下面是如何从列分隔的文件批量创建实体,而不考虑所有取消引号和取消转义的例程:
t1qtbnec6#
使用create将导致每个新项目一个查询。如果你想减少重复查询的数量,你需要使用其他的东西。
我使用Bulk Insert代码段取得了一些成功,尽管该代码段相当旧。也许需要做一些改变才能让它重新工作。
http://djangosnippets.org/snippets/446/
f2uvfpb97#
看看这篇关于bulkops模块的博客文章。
在我的django 1.3应用程序上,我经历了显著的加速。
eaf3rand8#
最简单的方法是使用
create
Manager方法,该方法只需一步即可创建和保存对象。