Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erklärung von Django ORM, dem ORM-Framework in Python

Ausführliche Erklärung von Django ORM, dem ORM-Framework in Python

王林
王林Original
2023-06-11 09:12:072762Durchsuche

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:

  • Tabellen in der Datenbank werden Klassen in Python zugeordnet
  • Felder in der Datenbank Attributen in Python zugeordnet
  • Datensätze in der Datenbank werden Instanzen in Python zugeordnet

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:

  • Einfach und benutzerfreundlich: Die API von Django ORM ist sehr einfach und leicht zu beherrschen und zu verwenden.
  • Rich API: Django ORM bietet eine umfangreiche API zum Ausführen gängiger Datenbankvorgänge wie Hinzufügen, Löschen, Ändern, Abfragen usw. Es unterstützt auch Vorgänge wie erweiterte Abfragen und Aggregationsabfragen.
  • Gute Skalierbarkeit: Django ORM kann nahtlos in andere Bibliotheken von Drittanbietern integriert werden, wie z. B. das Django REST-Framework, Django-Oscar usw.
  • Automatische Zuordnung: Django ORM unterstützt die automatische Zuordnung. Entwickler müssen lediglich die Struktur der Datenbanktabelle definieren, und die entsprechende Python-Klasse kann automatisch generiert werden, wodurch die Menge an wiederholtem Code während des Entwicklungsprozesses reduziert wird. So verwenden Sie Django ORM Definieren Sie zunächst die Modellklasse, die Modellklasse. Es handelt sich um eine Klasse in Python, die die Felder in der Datentabelle und andere Metadaten der Datentabelle wie Tabellennamen, Index usw. definiert. Das Folgende ist eine einfache Modellklassendefinition:
  • pip install Django
Im obigen Code verwenden wir das von Django ORM bereitgestellte Modul 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.

    Datenbanktabelle erstellen
    1. Nach Abschluss der Definition der Modellklasse müssen Sie die Datenbanktabelle durch Migration generieren. Django ORM bietet eine automatische Migrationsfunktion. Führen Sie einfach den folgenden Befehl aus, um eine Datentabelle zu generieren:
    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.

        CRUD-Operation
      a Datensatz erstellen

      Sie können über die Modellklasse ganz einfach neue Datensätze zur Datentabelle hinzufügen In der Datenbank gespeichert:

      python manage.py makemigrations
      python manage.py migrate
      models模块来定义了一个名为Book的数据表,其中包含了三个字段:titleauthorpub_datemax_length用于指定字符串类型字段的最大长度,DateTimeField用于存储时间类型字段。

      1. 创建数据库表

      在完成模型类的定义后,需要通过迁移生成数据库表。Django ORM提供了自动迁移功能,只需运行以下命令即可生成数据表:

      from datetime import datetime
      book = Book(title='Django ORM Tutorial', author='Terry', pub_date=datetime.now())
      book.save()

      以上命令创建了Book表,表结构与定义的模型类对应。

      1. CRUD操作

      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表中所有记录的titleauthorpub_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中支持的聚合操作包括:AvgMaxMinCountSumb. 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:

      rrreee

      c 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>Buchaus > 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn