【发布时间】:2012-09-21 14:33:17
【问题描述】:
我正在创建一个脚本,它将同步两个数据库。数据库中有一个数据应该存储为树,因此我将django-mptt 用于新数据库。当我同步数据库时,我从旧数据库中选择新数据并将其保存在新数据库中。
我想知道是否有更好的方法可以将新节点添加到树中?现在它看起来下一个方式:
...
# Add new data to DB
for new_record in new_records:
# Find appropriate parent using data in 'new_record'
parent = get_parent(new_record)
# Create object which should be added using data in 'new_record'
new_node = MyMPTTModel(...)
new_node.insert_at(parent, save = True)
# Similar to:
# new_node.insert_at(parent, save = False)
# new_node.save()
但它的工作速度很慢。我认为它是以这种方式工作的,因为在每次调用 insert_at(..., save = True) 方法后,django-mptt 应该将新节点写入数据库并修改数据库中已经存在的记录的 left 和 right 键。
有什么方法可以让django-mptt 在我每次调用insert_at 时修改查询,然后在我调用save 时一起应用所有更改?或者您知道如何减少执行时间的其他方法吗?
提前致谢。
【问题讨论】:
标签: python database django performance django-mptt