Django ORM是Python中經典的ORM框架,它是Django Web框架的一部分,為資料庫操作提供了便利的方式。 ORM全稱為物件關係映射,它可以將關係型資料庫中的表與Python中的類別進行映射,從而簡化了開發過程,提高了開發效率。本文將對Django ORM進行詳細介紹。
I. ORM的基本概念
ORM是一種將物件與關聯式資料庫之間的映射的技術,主要實現了以下三個方面的功能:
ORM的主要優點是可以減少開發人員編寫重複的SQL語句的時間和工作量,並且可以減少由於SQL語句的調整和變更所帶來的錯誤。
II. Django ORM的優點
與其他ORM框架相比,Django ORM擁有以下優點:
III. 如何使用Django ORM
#首先需要安裝Django,可以使用pip安裝:
pip install Django
在使用Django ORM時,需要先定義模型類,模型類是Python中的一個類,它定義了資料表中的欄位和資料表的其他元數據,如表名、索引等。以下是一個簡單的模型類別定義:
from django.db import models class Book(models.Model): title = models.CharField(max_length=100) author = models.CharField(max_length=50) pub_date = models.DateTimeField()
在上述程式碼中,我們使用了Django ORM提供的models
模組來定義了一個名為Book
的資料表,其中包含了三個欄位:title
、author
、pub_date
。 max_length
用於指定字串類型欄位的最大長度,DateTimeField
#用於儲存時間類型欄位。
在完成模型類別的定義後,需要透過遷移來產生資料庫表。 Django ORM提供了自動遷移功能,只需執行以下命令即可產生資料表:
python manage.py makemigrations python manage.py migrate
以上命令建立了Book
表,表結構與定義的模型類別對應。
a. 建立記錄
#透過模型類別可以輕鬆地在資料表中新增新的記錄,在以下程式碼中,我們建立了新的記錄並將其儲存到資料庫中:
from datetime import datetime book = Book(title='Django ORM Tutorial', author='Terry', pub_date=datetime.now()) book.save()
b. 更新記錄
使用Django ORM更新記錄非常簡單,只需先查詢記錄,然後將其更新並保存即可。以下是一個簡單的更新程式碼範例:
book = Book.objects.get(id=1) book.title = 'Updated Title' book.save()
c. 刪除記錄
刪除記錄也非常簡單,只需執行以下程式碼:
book = Book.objects.get(id=1) book.delete()
d. 查詢記錄
在Django ORM中,可以使用objects
物件進行查詢,以下是一個簡單的查詢範例程式碼:
books = Book.objects.all() for book in books: print(book.title, book.author, book.pub_date)
該程式碼將輸出Book
表中所有記錄的title
、author
和pub_date
欄位。
IV. 進階查詢操作
除了基本的CRUD操作外,Django ORM還支援一些進階查詢操作,如連表查詢、查詢條件組合、聚合操作等,以下是一些範例代碼。
a. 連表查詢
Django ORM中支援兩種方式的連表查詢:一種是透過ForeignKey
欄位進行關聯,另一種是透過自定義查詢進行關聯。
# 通过ForeignKey字段关联 class Author(models.Model): name = models.CharField(max_length=50) class Book(models.Model): title = models.CharField(max_length=100) author = models.ForeignKey(Author, on_delete=models.CASCADE) books = Book.objects.filter(author__name='Leo Tolstoy') # 以上代码查询了作者名为'Leo Tolstoy'的所有图书 # 通过自定义查询进行关联 books = Book.objects.raw('SELECT * FROM app_book INNER JOIN app_author ON app_book.author_id = app_author.id WHERE app_author.name = %s', ['Leo Tolstoy'])
b. 查詢條件組合
在Django ORM中,可以使用Q
物件將多個查詢條件組合,以實現更複雜的查詢。以下是一個範例程式碼:
from django.db.models import Q books = Book.objects.filter(Q(title__contains='Django') | Q(author__contains='Guido')) # 以上代码查询了标题中包含'Django'或作者名中包含'Guido'的所有图书
c. 聚合操作
聚合作業用於對資料進行分組或總計統計。 Django ORM中支援的聚合操作包括:Avg
、Max
、Min
、Count
、Sum
等。以下是一個範例程式碼:
from django.db.models import Avg avg_pub_date = Book.objects.all().aggregate(Avg('pub_date')) # 以上代码计算了所有图书的发布时间的平均值
V. 總結
本文對Python中的ORM框架Django ORM進行了詳細介紹。 Django ORM是一個簡單易用、功能豐富、具有良好擴展性的ORM框架,它可以幫助開發人員實現快速開發、更高效率的資料庫操作。除了基本的CRUD操作外,Django ORM還支援一些進階查詢操作,如連表查詢、查詢條件組合、聚合操作等,可滿足更多資料操作的需求。
以上是Python中的ORM框架Django ORM詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!