使用Django ORM避免冗余写入操作

时间:2018-02-01 11:06:31

标签: python mysql django

我有一个定期运行的任务,它对现有数据执行大量数据库写入调用。在大多数情况下,写入的记录不包含更改,因此更新查询是多余的。但是,冗余写入调用会对我们的数据库复制造成不必要的高负荷。

这大致是算法:

  1. 从数据库中获取现有行
  2. 根据传递给算法的参数可能会修改很多字段
  3. 使用instance.save()
  4. 将更新的行保存到数据库

    由于比我们的数据库复制更容易扩展我们的任务处理器,我想我会通过这样做将一些处理负载转移到代码上:

    if original_instance != possibly_updated_instance:
        possibly_updated_instance.save()
    

    事情是:Django ORM的等式运算符似乎只是比较主键,所以我们错误地删除了更改。

    有没有更好的方法来解决这个问题?

0 个答案:

没有答案