Python / Django比较和更新模型对象

时间:2017-08-07 06:49:25

标签: python django csv multiprocessing

我刚刚开始使用python,但在过去的几个月里学到了很多东西,现在我已经碰到了关于以高速度更新模型上的对象的问题。

我有一个名为Products的模型,这是从csv文件填充的,每天这个文件都会更新,如成本和数量,我可以将文件的每一行与产品模型进行比较,但这需要120k行3-4hours。

我可以采取什么程序来更快地完成此过程。我只想在成本和数量发生变化时修改对象

有什么建议我如何解决这个问题?

我尝试过的Ver3。

import os
root = os.getcwd()
for file in os.listdir('.'):
   if not os.path.isfile(file):
       continue

   head, tail = os.path.splitext(file)
   if not tail:
       src = os.path.join(root, file)
       dst = os.path.join(root, file + '.txt')

       if not os.path.exists(dst): # check if the file doesn't exist
           os.rename(src, dst)

2 个答案:

答案 0 :(得分:0)

我曾经遇到过数据加载缓慢的问题,我可以告诉你我做了什么也许它可以帮助你以某种方式,我将执行传递给调试模式并试图找出colomn导致缓慢加载,以及每当我看到colomn导致问题时,我就会在其上添加索引(在我的案例中,在SGBD - > postgreSQL中),并且它有效。我希望你面临同样的问题,所以我的回答可以帮助你。

答案 1 :(得分:0)

这是一个粗略的想法: 1,在读取csv时,请将@BearBrow建议的pandas用于array_csv 2,将obj数据从Django转换为Numpy Arrary array_obj 3,不要使用numpy减法逐一比较它们

compare_index = (array_csv[['cost',['quantity']]] - array[['cost',['quantity']]] == 0)

4,找到更新的列    obj_need_updated = array_obj [np.logic_any(compare_index [' cost'],比较['数量'])]

然后使用Django批量更新https://github.com/aykut/django-bulk-update批量更新

希望这会为您提供加速代码的提示