1. 程式人生 > 其它 >13Django資料庫操作API詳解(二)

13Django資料庫操作API詳解(二)

1. 常用API總結

1) len()與count()統計物件數量

這兩個方法都可以獲取 QuerySet 物件的數量,但是它們稍微有一些不同,len 方法相對於 count 方法效率較低。示例如下:

  1. #len方法查詢所有資料再計算迭代物件的數量
  2. In [1]: len(Book.objects.all())
  3. Out[1]: 6
  4. #count()相當於執行select count(欄位)直接返回統計結果
  5. In [2]: Book.objects.all().count()
  6. Out[2]: 6

所以經過上面的示例說明,建議在需要獲取 QuerySet 數量的時候使用 count()方法。

2) exists()條件判斷資料記錄是否存在

在很多情況下,我們需要根據給定的條件判斷資料是否在 Model 中存在。Django 提供了一個簡便的方法 exists() 方法,它的返回值是一個布林值,如果存在的情況下將返回 Ture,反之返回 False。示例如下:

  1. In [3]: Book.objects.filter(title__exact="Python").exists()
  2. Out[3]: True

3) update方法更新Model例項

使用 update 方法來更新 Model 例項是非常簡便的,它相比 save 方法來說,對開發者更加友好。update 方法可以可以一次更新多個物件,並返回一個整數,標識被改動的資料記錄數量,示例說明如下:

  1. In [4]: Book.objects.filter(title__exact="Python").update(title="Python Django")
  2. Out[4]: 1

4) delete方法刪除資料記錄

如果想刪除一條資料記錄,我們可以呼叫 delete() 方法。舉例如下:

純文字複製
  1. #呼叫delete方法刪除
  2. In [4]: Book.objects.filter(title__exact="Tornado").delete()
  3. Out[4]: (3, {'index.Author_books': 2, 'index.Book': 1})

delete 方法返回一個二元組:第一個元素代表刪除例項的總個數,第二個元素是字典型別,記錄每一個 Model 型別刪除的例項個數。由於作者表和書籍表之間存在多對多的關係,所以此處刪除了兩個 Model 例項,而書籍表中刪除title=Tornado

的資料記錄。

本節知識作為《Django查詢資料庫操作詳解(一)》的第二部分。通過這兩節知識的學習,大家對這些 API 一定不再陌生,只要勤加練習,就會熟練掌握它們,學會使用這些 API 會給我們的開發工作帶來極大的方便。