2012-12-06 78 views
3

有時我們必須做一個Model instance.save(),無論是否有某個字段發生了變化,只是爲了安全和快速開發。保存django ORM模型沒有變化是多麼昂貴?

  1. django ORM有多昂貴?
  2. 信號總是被髮送?
  3. 執行任何SQL查詢?

我用django調試工具欄進行了測試,在模型中的任何內容發生更改的不同點上執行10.save(),並且日誌不會註冊sql查詢。

其他方式來測試它或一些文章?

謝謝你提前。

+0

關於信號:https://docs.djangoproject.com/en/de v/ref/models/instances /?from = olddocs#當你保存時發生什麼 – Mark

回答

2

我不完全確定你的應用程序如何處理這個。

但我跑了一個小測試:

a = Blog.objects.get(pk=1) 

for b in range(1, 100): 
    a.save() 

這給我的結果:

87.04毫秒(201個查詢)

要潔具以及一個保存會做兩個查詢:

SELECT ••• FROM `fun_blog` WHERE `fun_blog`.`id` = 1 LIMIT 1 

UPDATE `fun_blog` SET `title` = 'This is my testtitle', `body` = 'This is a testbody' WHERE `fun_blog`.`id` = 1 
+0

這是Django 1.8.7的行爲。 –