更新時間:2023-05-18 來源:黑馬程序員 瀏覽量:
Django的ORM(對象關(guān)系映射)是一種將數(shù)據(jù)庫中的數(shù)據(jù)映射到Python對象中的技術(shù),它使得開發(fā)者可以通過使用Python代碼來操作數(shù)據(jù)庫,而無需直接編寫SQL語句。ORM還提供了一些便捷的功能,例如查詢優(yōu)化、數(shù)據(jù)驗證等。
以下是Django ORM的一些基本用法示例:
from django.db import models class Person(models.Model): name = models.CharField(max_length=50) age = models.IntegerField()
上述代碼中,我們定義了一個 Person 類,它繼承了django.db.models.Model類,并定義了兩個屬性name 和age,它們分別對應(yīng)數(shù)據(jù)庫中的表格中的兩個列。
person = Person(name='Alice', age=25) person.save()
我們在以上代碼中創(chuàng)建了一個Person對象,并調(diào)用了save()方法將它保存到數(shù)據(jù)庫中。
people = Person.objects.all() for person in people: print(person.name, person.age)
我們使用Person.objects.all()方法查詢了數(shù)據(jù)庫中的所有Person對象,并遍歷了這些對象并打印了它們的屬性。
person = Person.objects.get(name='Alice') person.age = 26 person.save()
我們使用Person.objects.get()方法在上述代碼中獲取了一個名為Alice的Person對象,并將它的年齡屬性更新為26,然后調(diào)用save()方法將更新保存到數(shù)據(jù)庫中。
person = Person.objects.get(name='Alice') person.age = 26 person.save()
上述代碼中,我們使用Person.objects.get()方法獲取了一個名為Alice的Person對象,并調(diào)用delete()方法將它從數(shù)據(jù)庫中刪除。
adults = Person.objects.filter(age__gte=18) for adult in adults: print(adult.name)
我們可以使用Person.objects.filter()方法對數(shù)據(jù)庫進(jìn)行過濾,只選出年齡大于等于18歲的Person對象,并遍歷打印了它們的姓名。
class Book(models.Model): title = models.CharField(max_length=100) author = models.ForeignKey(Person, on_delete=models.CASCADE)
上述代碼中,我們定義了一個Book類,它有一個名為author的外鍵關(guān)聯(lián)到Person模型。
books = Book.objects.filter(author__name='Alice') for book in books: print(book.title)
上述代碼中,我們使用Book.objects.filter()方法對數(shù)據(jù)庫進(jìn)行過濾,選出所有作者名為Alice的Book對象,并遍歷打印了它們的標(biāo)題。
這只是Django ORM的基本用法示例,實際上Django ORM 還有很多高級用法和功能,例如聚合、多對多關(guān)系、多級關(guān)聯(lián)查詢等。