Django ORM ist ein klassisches ORM-Framework in Python. Es ist Teil des Django-Web-Frameworks und bietet eine praktische Möglichkeit für Datenbankoperationen. ORM steht für Object Relational Mapping, das Tabellen in relationalen Datenbanken Klassen in Python zuordnen kann, wodurch der Entwicklungsprozess vereinfacht und die Entwicklungseffizienz verbessert wird. In diesem Artikel wird Django ORM ausführlich vorgestellt.
I. Das Grundkonzept von ORM
ORM ist eine Technologie, die Objekte relationalen Datenbanken zuordnet. Sie implementiert hauptsächlich die folgenden drei Funktionen:
Der Hauptvorteil von ORM besteht darin, dass es den Zeit- und Arbeitsaufwand für Entwickler beim Schreiben sich wiederholender SQL-Anweisungen reduzieren und Fehler reduzieren kann, die durch Anpassungen und Änderungen verursacht werden SQL-Anweisungen.
II. Vorteile von Django ORM
Im Vergleich zu anderen ORM-Frameworks bietet Django ORM die folgenden Vorteile:
pip install Django
models
, um eine Datentabelle mit dem Namen Book
zu definieren, die enthält drei Felder: title
, author
, pub_date
. max_length
wird verwendet, um die maximale Länge von Feldern vom Typ Zeichenfolge anzugeben, und DateTimeField
wird zum Speichern von Feldern vom Typ Zeit verwendet. 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()
Der obige Befehl erstellt die Tabelle Book
und die Tabellenstruktur entspricht der definierten Modellklasse.
python manage.py makemigrations python manage.py migrate
models
模块来定义了一个名为Book
的数据表,其中包含了三个字段:title
、author
、pub_date
。max_length
用于指定字符串类型字段的最大长度,DateTimeField
用于存储时间类型字段。在完成模型类的定义后,需要通过迁移生成数据库表。Django ORM提供了自动迁移功能,只需运行以下命令即可生成数据表:
from datetime import datetime book = Book(title='Django ORM Tutorial', author='Terry', pub_date=datetime.now()) book.save()
以上命令创建了Book
表,表结构与定义的模型类对应。
a. 创建记录
通过模型类可以轻松地向数据表中添加新的记录,在以下代码中,我们创建了一条新的记录并将其保存到数据库中:
book = Book.objects.get(id=1) book.title = 'Updated Title' book.save()
b. 更新记录
使用Django ORM更新记录非常简单,只需先查询记录,然后将其更新并保存即可。以下是一个简单的更新代码示例:
book = Book.objects.get(id=1) book.delete()
c. 删除记录
删除记录也非常简单,只需执行以下代码即可:
books = Book.objects.all() for book in books: print(book.title, book.author, book.pub_date)
d. 查询记录
在Django ORM中,可以使用objects
对象进行查询,以下是一个简单的查询示例代码:
# 通过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'])
该代码将输出Book
表中所有记录的title
、author
和pub_date
字段。
IV. 高级查询操作
除了基本的CRUD操作外,Django ORM还支持一些高级查询操作,如连表查询、查询条件组合、聚合操作等,以下是一些示例代码。
a. 连表查询
Django ORM中支持两种方式的连表查询:一种是通过ForeignKey
字段进行关联,另一种是通过自定义查询进行关联。
from django.db.models import Q books = Book.objects.filter(Q(title__contains='Django') | Q(author__contains='Guido')) # 以上代码查询了标题中包含'Django'或作者名中包含'Guido'的所有图书
b. 查询条件组合
在Django ORM中,可以使用Q
对象将多个查询条件进行组合,以实现更加复杂的查询。以下是一个示例代码:
from django.db.models import Avg avg_pub_date = Book.objects.all().aggregate(Avg('pub_date')) # 以上代码计算了所有图书的发布时间的平均值
c. 聚合操作
聚合操作用于对数据进行分组或汇总统计。Django ORM中支持的聚合操作包括:Avg
、Max
、Min
、Count
、Sum
b. Datensätze aktualisieren
Das Aktualisieren von Datensätzen mit Django ORM ist sehr einfach. Fragen Sie einfach zuerst den Datensatz ab, aktualisieren Sie ihn dann und speichern Sie ihn. Das Folgende ist ein einfaches Update-Codebeispiel:
rrreeec Datensätze löschen
🎜 Das Löschen von Datensätzen ist ebenfalls sehr einfach. Führen Sie einfach den folgenden Code aus: 🎜rrreee🎜d. In Django ORM können Sie verwenden Objekte
Objekt zum Abfragen, das Folgende ist ein einfacher Beispielcode für eine Abfrage: 🎜rrreee🎜Dieser Code gibt den Titel
, aller Datensätze im <code>Buch
aus > Tabellenfelder >author und pub_date
. 🎜🎜IV. Erweiterte Abfrageoperationen🎜🎜Zusätzlich zu den grundlegenden CRUD-Operationen unterstützt Django ORM auch einige erweiterte Abfrageoperationen, wie z. B. Verknüpfungstabellenabfragen, Abfragebedingungskombinationen, Aggregationsoperationen usw. Im Folgenden finden Sie einige Beispielcodes. 🎜🎜a. Join-Tabellenabfrage🎜🎜Django ORM unterstützt zwei Methoden der Join-Tabellenabfrage: eine ist die Verknüpfung über das Feld ForeignKey
und die andere die Verknüpfung über eine benutzerdefinierte Abfrage. 🎜rrreee🎜b. Kombination von Abfragebedingungen🎜🎜In Django ORM können Sie das Q
-Objekt verwenden, um mehrere Abfragebedingungen zu kombinieren, um komplexere Abfragen zu erreichen. Das Folgende ist ein Beispielcode: 🎜rrreee🎜c. Aggregationsoperation 🎜🎜Aggregationsoperation wird verwendet, um Daten zu gruppieren oder Statistiken zusammenzufassen. Zu den in Django ORM unterstützten Aggregationsoperationen gehören: Avg
, Max
, Min
, Count
, Sum Code>etc. Das Folgende ist ein Beispielcode: 🎜rrreee🎜V. Zusammenfassung🎜🎜Dieser Artikel bietet eine detaillierte Einführung in das ORM-Framework Django ORM in Python. Django ORM ist ein benutzerfreundliches, funktionsreiches und skalierbares ORM-Framework, das Entwicklern dabei helfen kann, eine schnelle Entwicklung und effizientere Datenbankoperationen zu erreichen. Zusätzlich zu den grundlegenden CRUD-Operationen unterstützt Django ORM auch einige erweiterte Abfrageoperationen, z. B. Verknüpfungstabellenabfragen, Abfragebedingungskombinationen, Aggregationsoperationen usw., die den Anforderungen weiterer Datenoperationen gerecht werden können. 🎜
Das obige ist der detaillierte Inhalt vonAusführliche Erklärung von Django ORM, dem ORM-Framework in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!