Rumah >pembangunan bahagian belakang >Tutorial Python >Penjelasan terperinci tentang Django ORM, rangka kerja ORM dalam Python

Penjelasan terperinci tentang Django ORM, rangka kerja ORM dalam Python

王林
王林asal
2023-06-11 09:12:072827semak imbas

Django ORM ialah rangka kerja ORM klasik dalam Python Ia merupakan sebahagian daripada rangka kerja Web Django dan menyediakan cara yang mudah untuk operasi pangkalan data. ORM bermaksud Pemetaan Hubungan Objek, yang boleh memetakan jadual dalam pangkalan data hubungan ke kelas dalam Python, sekali gus memudahkan proses pembangunan dan meningkatkan kecekapan pembangunan. Artikel ini akan memperkenalkan Django ORM secara terperinci.

I. Konsep asas ORM

ORM ialah teknologi yang memetakan objek kepada pangkalan data relasi Ia terutamanya melaksanakan tiga fungsi berikut:

  • Jadual dalam pangkalan data. dipetakan ke kelas dalam Python
  • Medan dalam pangkalan data dipetakan kepada atribut dalam Python
  • Rekod dalam pangkalan data dipetakan kepada kejadian dalam Python

Kelebihan utama ORM ialah ia boleh mengurangkan masa dan beban kerja pembangun menulis pernyataan SQL berulang, dan ia boleh mengurangkan ralat yang disebabkan oleh pelarasan dan perubahan pada pernyataan SQL.

II. Kelebihan Django ORM

Berbanding dengan rangka kerja ORM yang lain, Django ORM mempunyai kelebihan berikut:

  • Mudah dan mudah digunakan: API Django ORM ialah sangat mudah, mudah dikuasai dan digunakan.
  • API Kaya: Django ORM menyediakan API yang kaya untuk melengkapkan operasi pangkalan data biasa, seperti penambahan, pemadaman, pengubahsuaian, pertanyaan, dll. Ia juga menyokong operasi seperti pertanyaan lanjutan dan pertanyaan pengagregatan.
  • Mempunyai kebolehskalaan yang baik: Django ORM boleh disepadukan dengan lancar dengan perpustakaan pihak ketiga yang lain, seperti rangka kerja Django REST, Django-Oscar, dsb.
  • Pemetaan automatik: Django ORM menyokong pemetaan automatik Pembangun hanya perlu mentakrifkan struktur jadual pangkalan data, dan kelas Python yang sepadan boleh dijana secara automatik, dengan itu mengurangkan jumlah kod berulang semasa proses pembangunan.

III. Cara memasang Django menggunakan Django ORM

Mula-mula anda perlu memasang Django, anda boleh menggunakan pip untuk memasang:

pip install Django
  1. Tentukan model

Apabila menggunakan Django ORM, anda perlu mentakrifkan kelas model terlebih dahulu Kelas model ialah kelas dalam Python yang mentakrifkan medan dalam jadual data dan aspek lain jadual data, seperti nama jadual, indeks, dsb. Berikut ialah definisi kelas model ringkas:

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()

Dalam kod di atas, kami menggunakan modul models yang disediakan oleh Django ORM untuk mentakrifkan jadual data bernama Book, yang mengandungi tiga Medan: title , author, pub_date. max_length digunakan untuk menentukan panjang maksimum medan jenis rentetan dan DateTimeField digunakan untuk menyimpan medan jenis masa.

  1. Buat jadual pangkalan data

Selepas melengkapkan definisi kelas model, anda perlu menjana jadual pangkalan data melalui migrasi. Django ORM menyediakan fungsi pemindahan automatik Anda hanya perlu menjalankan perintah berikut untuk menjana jadual data:

python manage.py makemigrations
python manage.py migrate

Arahan di atas mencipta jadual Book dan struktur jadual sepadan dengan kelas model yang ditentukan.

  1. Operasi CRUD

a Cipta rekod

Anda boleh menambah rekod baharu pada jadual data melalui kelas model dalam kod berikut. Kami mencipta rekod baharu dan menyimpannya ke pangkalan data:

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

b Mengemas kini rekod

Mengemas kini rekod menggunakan Django ORM adalah sangat mudah, cuma tanya rekod dahulu dan kemudian kemas kini dan. simpan je. Berikut ialah contoh kod kemas kini yang mudah:

book = Book.objects.get(id=1)
book.title = 'Updated Title'
book.save()

c Padamkan rekod

Memadam rekod juga sangat mudah, cuma jalankan kod berikut:

book = Book.objects.get(id=1)
book.delete()

d

Dalam Django ORM, anda boleh menggunakan objek objects untuk pertanyaan Berikut ialah kod contoh pertanyaan mudah:

books = Book.objects.all()
for book in books:
    print(book.title, book.author, book.pub_date)

Kod ini akan mengeluarkan Book semua rekod dalam. medan jadual 🎜>, title dan author. pub_date

IV. Operasi pertanyaan lanjutan

Selain operasi CRUD asas, Django ORM juga menyokong beberapa operasi pertanyaan lanjutan, seperti pertanyaan jadual gabungan, kombinasi syarat pertanyaan, operasi pengagregatan, dsb. adalah beberapa contoh kod.

a. Sertai pertanyaan jadual

Django ORM menyokong dua kaedah untuk menyertai pertanyaan jadual: satu adalah untuk mengaitkan melalui medan

dan satu lagi adalah untuk mengaitkan melalui pertanyaan tersuai . 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. Kombinasi syarat pertanyaan

Dalam Django ORM, anda boleh menggunakan objek

untuk menggabungkan berbilang syarat pertanyaan untuk mencapai pertanyaan yang lebih kompleks. Berikut ialah kod sampel: Q

from django.db.models import Q

books = Book.objects.filter(Q(title__contains='Django') | Q(author__contains='Guido'))
# 以上代码查询了标题中包含'Django'或作者名中包含'Guido'的所有图书

c. Operasi pengagregatan

Operasi pengagregatan digunakan untuk mengumpulkan data atau meringkaskan statistik. Operasi pengagregatan yang disokong dalam Django ORM termasuk:

, Avg, Max, Min, Count, dsb. Berikut ialah contoh kod: Sum

from django.db.models import Avg

avg_pub_date = Book.objects.all().aggregate(Avg('pub_date'))
# 以上代码计算了所有图书的发布时间的平均值

V. Ringkasan

Artikel ini menyediakan pengenalan terperinci kepada rangka kerja ORM Django ORM dalam Python. Django ORM ialah rangka kerja ORM yang mudah digunakan, kaya dengan ciri dan boleh skala yang boleh membantu pembangun mencapai pembangunan pesat dan operasi pangkalan data yang lebih cekap. Selain operasi CRUD asas, Django ORM juga menyokong beberapa operasi pertanyaan lanjutan, seperti pertanyaan jadual gabungan, kombinasi keadaan pertanyaan, operasi pengagregatan, dsb., yang boleh memenuhi keperluan lebih banyak operasi data.

Atas ialah kandungan terperinci Penjelasan terperinci tentang Django ORM, rangka kerja ORM dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn